#include<stdio.h>
//快速排序
int main(){
int a[]={2,1,5,4,3,8,9,6,7};
int* b=a-1+sizeof(a)/4; //基准指针
int* i=a-1; //慢指针
int* j=a; //快指针
int QS(int* tb,int* ti,int* tj);
QS(b,i,j);
for(int k=0;k<sizeof(a)/4;k++){
printf("%d ",a[k]);
}
}
//QuickSort
int QS(int* tb,int* ti,int* tj){
//如果数组空或只有一个数不用排序
if(tb<=tj){
return 0;
}
void swap(int *ti2,int* tj2);
int* b=tb;
int* i=ti;
int* j=tj;
int* t=ti;
while(true){
if(*j<*b){
i++;
swap(i,j);
j++;
}else{
j++;
}
if(j==b){
i++;
swap(i,j);
break;
}
}
//判断左区是否还可以运算
if(i>t+1){
QS(i-1,t,t+1);
}
//判断右区是否还可以运算
if(b>i+1){
QS(b,i,i+1);
}
}
//交换两个指针的数据
void swap(int *ti2,int* tj2){
int t=*ti2;
*ti2=*tj2;
*tj2=t;
}