作者:不详 来源:互联网 酷勤网收集 2008-04-23
摘要
行为单位对字符串按给定的条件进行排序,条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8
源字符串 a b c d h g f e
1 2 3 4 9 8 7 6 5
则处理后字符串 d c b a e f g h
4 3 2 1 9 5 6 7 8
部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
----------------------------
类型:字符串左右排序和比较。
注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要
half加1,本题对右半部分采用选择法对其进行升序排序。
void jsSort() /*标准答案*/
{int I,j,k,strl,half;
char ch;
for(I=0;I<20;I++)
{strl=strlen(xx[I]);
half=strl/2;
for(j=0;j<half-1;j++)
for(k=j+1;k<half;k++)
if (xx[I][j]<xx[I][k])
{ch=xx[I][j];
xx[I][j]=xx[I][k];
xx[I][k]=ch;}
if (strl%2) half++;
for(j=half;j<strl-1;j++)
for(k=j+1;k<strl;k++)
if (xx[I][j]>xx[I][k])
{ch=xx[I][j];
xx[I][j]=xx[I][k];
xx[I][k]=ch;}
}
}

