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