呼呼。。修改了while的的判断条件。。
#include<stdio.h>
#include<stdlib.h>
#define N 10
void quicksort(int *low,int *high); /*快速排序的主函数*/
int *split(int *low,int *high); /*分割函数,返回分割点的地址*/
int main(void){
int array[N],i;
printf("Enter %d numbers(int):",N);
for(i=0;i<N;i++)
scanf("%d",&array[i]);
quicksort(array,array+N-1);
printf("Sorted:");
for(i=0;i<N;i++)
printf(" %d",array[i]);
printf("\n");
system("pause");
return 0;
}
void quicksort(int *low,int *high){
int *mid;
if(low>=high) return;
mid = split(low,high);
quicksort(low,mid-1);
quicksort(mid+1,high);
}
int *split(int *low,int *high){
int mid_num = *low;
for(;;){
while(low<high && *high>mid_num)
high--;
if(low>=high) break;
*low++ = *high;
while(low<high && *low<mid_num)
low++;
if(low>=high) break;
*high-- = *low;
}
*low=mid_num;
return low;
}