#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int Partion(int A[], int p, int q)
{
int key = A[p];
int i = p;
for(int j = p+1; j <= q; j ++)
{
if(A[j] < key)
{
i ++;
swap<int>(A[i], A[j]);
}
}
swap<int>(A[p], A[i]);
return i;
}
void QuickSort(int A[], int p, int q)
{
if(p < q)
{
int r = Partion(A, p, q);
QuickSort(A, p, r-1);
QuickSort(A, r+1, q);
}
}
int main(int argc, char *argv[])
{
int A[10] = {8,1,2,4,6,7,9,3,5,0};
for(int j = 0; j < 10; j ++)
cout<<A[j];
cout<<endl;
QuickSort(A, 0, 9);
for(int j = 0; j < 10; j ++)
cout<<A[j];
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
快速排序的时间复杂度为O(nlogn),但是最坏的情况下会达到O(n^2),是就地排序,但不是稳定的排序,详细的内容可见《算法导论》。