描述:
输入一个字符串,从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
输入:
一个字符串
输出:
排序后的字符串
样例输入:
12345
样例输出:
21345
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, j;
unsigned int len;
char str[1024] = {0}, tmp;
scanf("%s", str);
len = strlen(str);
if(len%2 == 0) { /* even */
for(i=0; i<len/2-1; i++) {
for(j=i+1; j<len/2; j++) {
if(str[i] < str[j]) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
for(i=len/2; i<len-1; i++) {
for(j=i+1; j<len; j++) {
if(str[i] > str[j]) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
}else { /* odd */
for(i=0; i<len/2-1; i++) {
for(j=i+1; j<len/2; j++) {
if(str[i] < str[j]) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
for(i=len/2+1; i<len-1; i++) {
for(j=i+1; j<len; j++) {
if(str[i] > str[j]) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
}
printf("%s\n", str);
return 0;
}