快速排序C++

来源:互联网 发布:debian ubuntu 对比 编辑:程序博客网 时间:2024/06/06 00:43

对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,它的期望时间复杂度是O(nlgn)。另外,能够进行原址排序。

采用分治思想:

int Partition(int *array,int p,int r){    int x=array[r];     //以最后一个作为主元(pivot element)    int i=p-1;    for(int j=p;j<r;++j){        if(array[j]<x){            i++;            swap(array[i],array[j]);        }    }    swap(array[r],array[i+1]);    return i+1;}void QuickSort(int *array,int p,int r){    if(p<r){        int q=Partition(array,p,r);        QuickSort(array,p,q-1);        QuickSort(array,q+1,r);         }}
0 0
原创粉丝点击