2
我想根據字符串中每個字符的ASCII值對C中的字符串進行排序。我寫了一個快速排序來做到這一點。我的代碼如下:使用快速排序對C中的字符串進行排序
#include<stdio.h>
#include<stdlib.h>
void quick_sort(char* str, int l, int r){
if(l < r){
int left = l;
int right = r;
char x = *str;
while(left < right){
while(left < right && *(str+right) > x)
right--;
if(left < right)
*(str+(left++)) = *(str+right);
while(left < right && *(str+left) < x)
left++;
if(left < right)
*(str+(right--)) = *(str+left);
}
*(str+left) = x;
quick_sort(str, l, left-1);
quick_sort(str, right+1, r);
}
}
main(){
char* str = (char*)malloc(sizeof(char)*100);
printf("please input a string: ");
scanf("%s", str);
printf("the original string is: %s\n", str);
quick_sort(str, 0, strlen(str)-1);
printf("the sorted string is: %s\n",str);
free(str);
system("pause");
}
但它只能在字符串很短的時候才起作用,說「bac」。當字符串更長時,結果是錯誤的。如果有人能給我任何想法,這將是有益的。
什麼是錯誤的大字符串的輸入/輸出? – xaxxon 2013-05-12 08:01:18
你能使用['qsort'](http://pubs.opengroup.org/onlinepubs/009695399/functions/qsort.html)嗎? – Sebivor 2013-05-12 09:54:59