#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void quicksort(int *a,int low,int high);
int find_pos(int *a,int low,int high);
int main(){
int a[10];
srand((unsigned int )(time(0)));
for(int i=0;i<10;i++){
a[i]=rand()%20+1;
printf("%d ",a[i]);
}
printf("\n排序后\n");
quicksort(a,0,9);
for(int i=0;i<10;i++)
printf("%d ",a[i]);
}
void quicksort(int *a,int low,int high){
int pos;
if(low<high){
pos=find_pos(a,low,high);
quicksort(a,low,pos-1);//pos会不断减少 ,最终low=high 递归停止
quicksort(a,pos+1,high);//同理
}
}
int find_pos(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];
}
//此时 low=high
a[low]=val;
return low;
}
一个简单的快排