#include <iostream>
// dailing 20140804
int Partition(int a[],int low,int high){
int temp =a[low];
while(low<high){
while(low<high&&a[high]>=temp) --high;
a[low]=a[high];
while(low<high&&a[low]<=temp) ++low;
a[high]=a[low];
}
a[low]=temp;
return low;
}
void QuickSort(int a[],int low,int high){
if(low<high){
int pi=Partition(a,low,high);
QuickSort(a,low,pi-1);
QuickSort(a,pi+1,high);
}
}
int main()
{
int a[12] = {12,11,10,9,8,7,6,5,4,3,2,1};
QuickSort(a, 0, 11);
for (int i = 0;i<=11;i++)
{
std::cout<<a[i]<<" ";
}
system("pause");
}
一般是左区间小于右区间作为有效执行区间的判断。
时间复杂度分析:暂