清华大学2001年机试-字符串排序-1066
题目描述:
输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果
输入
一个字符串,其长度n<=20
输出
输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
样例输入
dbca
样例输出
abcd
解题思路:
经典的快速排序
AC代码:
#include <cstdio>
#include <cstring>
char input[20];
void quickSort(int start, int end){
if(start >= end) return;
int a = start, b = end, key = input[start];
while(a < b){
while(input[b] > key && a < b) b--;
if(a < b) input[a] = input[b];
while(input[a] <= key && a < b) a++;
if(a < b) input[b] = input[a];
}
input[a] = key;
quickSort(start, a-1);
quickSort(b+1, end);
}
int main(){
while(scanf("%s", input) != EOF){
int len = strlen(input);
quickSort(0, len-1);
printf("%s\n", input);
}
return 0;
}