#include<stdio.h> //快速排序完成
void QuickSort(int [],int,int);
int FindPos(int *a,int,int);
int main(void){
int i;
int a[6] ={2,1,2000,99,4,3};
QuickSort(a,0,5);
for(i=0;i<6;i++){
printf("%d\n",a[i]);
}
return 0;
}
void QuickSort(int *a,int low,int high){
int pos; //找位置
if(low<high){
pos =FindPos(a,low,high);
QuickSort(a,low,pos-1);
QuickSort(a,pos+1,high);
}
}
//找位置
int FindPos(int *a,int low,int high){
int val =a[low];
while(low < high){
while(low < high && a[high]>=val){
--high;
}
a[low] =a[high];
while(low<high &&a[low]<=val){
++low;
}
a[high]=a[low];
}
a[low] = val;
return low; //返回的排序一趟的位置 low 和high都行因为终止条件是low= high
}
还没有评论,来说两句吧...