没加随机优化和三数取中等优化...只是发出来方便自己记忆
#include <stdio.h>
#include <time.h>
int partition(int *a,int l,int r){
int temp=a[l];
while(l<r){
while(l<r&&a[r]>=temp)
r--;
a[l]=a[r];
while(l<r&&a[l]<=temp)
l++;
a[r]=a[l];
}
a[l]=temp;
return l;
}
void quicksort(int *a,int l,int r){
if(l>=r)
return;
while(l<r){
int pos=partition(a,l,r);
quicksort(a,l,pos-1);
l=pos+1;
}
}
int main(){
int a[25];
srand(time(0));
for(int i=0;i<20;i++)
a[i]=rand()%100;
quicksort(a,0,19);
for(int i=0;i<20;i++)
printf("%d ",a[i]);
puts("");
}