我从我观看的 youtube 中算法的视觉呈现中制作了一个快速排序算法,但我的递归根本不起作用。:( 如果我注释掉这两行,
quicksort(array,0,start-1);
quicksort(array,start+1,temp);
..程序没有崩溃,输出变为2,1,3,5,4,这部分正确..但是当它进入递归时它崩溃了。在整个while循环之后,开始与结束相同..
#include <stdio.h>
#include <conio.h>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void quicksort(int *array, int start, int end){
int pivot = start;
int temp = end;
while(start != end){
if(pivot==start){
if(array[pivot] > array[end]){
swap(&array[end],&array[pivot]);
pivot = end;
start++;
}
else
end--;
}
else{
if(array[pivot] < array[start]){
swap(&array[start],&array[pivot]);
pivot = start;
end--;
}
else
start++;
}
}
quicksort(array,0,start-1);
quicksort(array,start+1,temp);
}
main(){
int x[5] = {3,1,5,2,4};
int i;
quicksort(x,0,4);
for(i=0;i<5;i++)
printf("%d ", x[i]);
getch();
}