#include < iostream >
using namespace std;
void quicksort(int a[],int low,int high)
{
int i,j,m;
i = low;
m = low; // m指向相同关键字部分的最右端
j = high;
int piv = a[low]; // 记录枢轴的值(枢轴有多个)
if(low>=high) // 判断是否构成快速排序的条件
return;
while(m<=j){ // 条件是 m<=j
int temp;
if(a[m]>piv){ // 用 if.. else if.. else..语句,每次只能选一个
temp = a[m];
a[m] = a[j];
a[j] = temp;
j--; // j最后指向最左边的一个枢轴
}
else if(a[m]<piv){
temp = a[m];
a[m] = a[i];
a[i] = temp;
++i; // i指向最左边的枢轴
++m; // m 指向枢轴部分右边的第一个非枢轴元素
}
else ++m;
}
quicksort(a,low,i-1);
quicksort(a,j+1,high);
}
void display(int a[],int n)
{
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
int a[] = {5,8,7,5,2,3,1,5,5,0,5,4};
display(a,12);
quicksort(a,0,11);
display(a,12);
return 0;
}