快速排序算法

来源:互联网 发布:开源数据质量管理平台 编辑:程序博客网 时间:2024/06/02 02:40
#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),是就地排序,但不是稳定的排序,详细的内容可见《算法导论》。