#include <stdio.h>
#include <stdlib.h>
//快速排序
int Partition(int *a,int low ,int high){
int key;
key=a[low];
//减少不必要的交换;实质是把key放到合理的位置。
while(low<high){
while(low<high && a[high]>=key)
high--;
a[low]=a[high];
while(low<high && a[low]<=key)
low++;
a[high]=a[low];
}
a[low]=key;
return low;
}
void Qsort(int *a,int low,int high){
int tag;
while(low<high){
tag=Partition(a,low,high);
//改进为尾递归
Qsort(a,low,tag-1);
low=tag+1;
}
}
int main()
{
int a[10]={1,3,9,7,23,4,56,8,11,2};
int i;
Qsort(a,0,9);
for(i=0;i<10;i++){
printf("%d\t",a[i]);
}
return 0;
}