题目1066:字符串排序
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4061
解决:1630
-
题目描述:
-
输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果
-
输入:
-
一个字符串,其长度n<=20
-
输出:
-
输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
-
样例输入:
-
dcba
-
样例输出:
-
abcd
//字符串排序 //快排练习 #include<stdio.h> #include<string.h> const int MAX=20+2; char partion(char *arr,const int b,const int e); void qsort(char *arr,const int b,const int e); void swap(char *x,char *y); int main(void) { char arr[MAX]; while(scanf("%s",arr)!=EOF) { int len = strlen(arr); //快速排序 qsort(arr,0,len-1); //输出 for(int k=0;k<len;k++) printf("%c",arr[k]); printf("\n"); } return 0; } char partion(char *arr,const int b,const int e) { char p=arr[b];//分截点 int i=b;//左 int j=e;//右 while(i<j) { while(i<j&&arr[j]>=p) --j; arr[i]=arr[j]; while(i<j&&arr[i]<=p) ++i; arr[j]=arr[i]; } arr[i]=p; return i; } void qsort(char *arr,const int b,const int e) { int p; if(b<e) { p=partion(arr,b,e); qsort(arr,b,p-1); qsort(arr,p+1,e); } } void swap(char *x,char *y) { char temp; temp = *x; *x = *y; *y = temp; } /************************************************************** Problem: 1066 User: ranchothu Language: C Result: Accepted Time:190 ms Memory:908 kb ****************************************************************/