快速排序算法实现C/C++

来源:互联网 发布:电脑软件快捷键冲突 编辑:程序博客网 时间:2024/05/22 03:07

对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子非常小,另外他还能够进行原址排序,甚至在虚拟环境中也能很好地工作。下面是快速排序的C++实现代码及运行结果:

/*对SUM个数进行快速排序*/#include <iostream>#include <ctime>using namespace std;const int SUM = 10;int partion(int A[], int p, int r){    int x = A[r], i = p - 1, temp;    for (int j = p; j < r; j++)    {        if (A[j] <= x)        {            i = i + 1;            temp = A[j];            A[j] = A[i];            A[i] = temp;        }    }    temp = A[i + 1];    A[i + 1] = A[r];    A[r] = temp;    return i + 1;}void quicksort(int A[], int p, int r){    int q;    if (p < r)    {        q = partion(A, p, r);        quicksort(A, p, q - 1);        quicksort(A, q + 1, r);    }}void print(int A[], int s){    for (int i = 1; i <= s; i++)    {        cout << A[i] << endl;    }}int main(){    int A[SUM + 1];    memset(A, 0, SUM + 1);    srand(time(NULL));    for (int i = 0; i <= SUM; i++)    {        A[i] = rand() % 100;    }    cout << "rand numbers: " << endl;    print(A, SUM);    quicksort(A, 1, SUM);    cout << "quicksort numbers: " << endl;    print(A, SUM);    return 0;}

运行结果如下:



0 0
原创粉丝点击