我在c-99腳本中使用以下快速排列。在c-99中使用快速排列
問題是它編譯但它沒有任何輸出。我試圖把5,4,3,2,1分成1,2,3,4,5,我什麼也沒得到。
我不知道我在做什麼不正確。
這是我的代碼
\\pick a pivot
\\make a temporary left and right list
\\filter items to left and to the right
\\put it all back into the array left and pivot
\\recurse right side
#include <time.h>
#include <stdlib.h>
void subquicksort(int array[], int start, int end){
int leng=end-start;
if (leng<=1){
return;
}
int pivot=array[start];
int leftlist[leng]; \\create temporary left and right list
int lindex=0;
int rightlist[leng];
int rindex=0;
for(int i=start + 1; i < leng; i++){
if(array[i]<pivot) {
leftlist[lindex++]=array[i];
}
else{
rightlist[rindex++]=array[i];
}
}
array[start + lindex]=pivot;
for(int i=start +1; i <leng; i++){
if (i<lindex){
array[start + i]=leftlist[i];
}
if(i==lindex){
continue;
}
if(i>lindex){
array[start + i]=rightlist[i-lindex-1];
}
}
subquicksort(array,start,start+lindex);
subquicksort(array,start+lindex+1,end);
}
void quicksort(int array[],int leng){
subquicksort(array,0,leng);
}
int main(){
int nums[] = {5,4,3,2,1};
quicksort(nums, 5); \\use the quicksort function and print out the values sorted
for(int i=0;i<6;i++){
printf("%d",nums[i]);
}
return 0;
}
使用*標準* [的qsort(3)](http://man7.org/linux/man-pages/man3/qsort.3.html )。如果它是作業:編譯所有警告和調試信息('gcc -Wall -Wextra -g')然後**使用調試器**(''gdb') – 2014-10-29 20:46:38
格式化您的代碼。 – 2014-10-29 20:47:09
是的,你的代碼在眼睛上非常困難。 – LeatherFace 2014-10-29 20:47:45