标签:快速排序
快速排序也是典型的分治策略实现,与归并排序不同,快排的关键部分在于 分 也就是partition部分,快排平均时间复杂度是O(nlgn),最差时间是O(n^2),属于不稳定排序
下面是快排的C语言实现。
//p, r分别是数组中元素的下标
int partition(int A[], int p, int r)
{
    int i, j;
    i = p - 1;
    for(j = p; j < r; j++) {
        if (A[j] <= A[r]) {
            swap(&A[++i], &A[j]);
        }
    }
    //i总是最后一个满足小于等于A[r]的元素
    swap(&A[i + 1], &A[r]);
    return i + 1;
}
void quicksort(int A[], int p, int r)
{
    if (p < r) {
        int q = partition(A, p, r);
        quicksort(A, p, q - 1);
        quicksort(A, q + 1, r);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:快速排序
原文地址:http://blog.csdn.net/xianbt/article/details/47189997