每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
#include<stdio.h>
void quicksort(int a[],int left,int right){
if(left>right){
return ;
}
int temp=a[left];//temp就是基准
int i=left;
int j=right;
while(i!=j){
while(a[j]>=temp&&i<j){
j--;
}
while(a[i]<=temp &&i<j){
i++;
}
if(i<j){
int temp1=a[i];
a[i]=a[j];
a[j]=temp1;
}
}
a[left]=a[i];
a[i]=temp;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
int main(){
int a[10]={1,3,2,5,6,8,7,4,9,0};
quicksort(a,0,9);
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}