#include <bits/stdc++.h>
using namespace std;
void QuickSort(int a[],int start,int end){
int i,j,flag;
if(start<end){
i = start,j = end; /*将排序初始节点以及末尾节点下标记录*/
flag = a[i]; /*初始以a[0]为分界点*/
while(i<j){
while(a[j]>flag&&i<j){ /*先向右开始寻找,向右寻找小于分界点的值*/
j--;
}
if(i<j){ /*满足条件才调换,否则不做处理*/
a[i++] = a[j];
}
while(a[i]<=flag&&i<j){ /*向左寻找小于分界点的值,注意等于号*/
i++;
}
if(i<j){
a[j--] = a[i];
}
}
a[i] = flag; /*至此已划分为左边小于a[0],右边大于a[0]*/
QuickSort(a,start,i-1); /*左边递归排序*/
QuickSort(a,i+1,end); /*右边递归排序*/
}
}
int main(int argc, char** argv) {
int a[] = {2,6,3,5,9,7};
int len = sizeof(a)/sizeof(a[0]);
cout<<"排序前:"<<endl;
for(int i = 0;i<len;i++) cout<<a[i]<<" ";
cout<<"\n排序后:"<<endl;
QuickSort(a,0,len-1);
for(int i = 0;i<len;i++){
printf("%d ",a[i]);
}
return 0;
}