我是靠谱客的博主 无情衬衫,最近开发中收集的这篇文章主要介绍《算法导论》笔记 第7章 7.1快速排序的描述【笔记】【习题】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【笔记】

快速排序的最坏运行时间为O(n^2),期望运行时间为O(nlogn)。

int partition(int A[],int p,int r) {
    int x = A[r];
    int i = p-1;
    for (int j=p;j<r;j++) {
        if (A[j] <= x) {
            i++;
            swap(A[i],A[j]);
        }
    }
    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);
    }
}

【习题】

7.1-1 说明PARTITION过程作用于输入数组 A = <13,19,9,5,12,8,7,4,21,2,6,11> 上的过程。



7.1-2 当数组 A[p..r] 中的元素均相同时,PARTITION 返回的q值是什么?修改 PARTITION,使得当数组 A[p..r] 中所有的元素值相同时,q = (p+r)/2。

是r。

if (i+1==r) return (p+r)/2;


7.1-3 简要地证明在大小为n的子数组上,PARTITION的运行时间为⊙(n)。

前n-1个元素均与r进行了一次比较,因此运行时间为⊙(1) * n = ⊙(n)


7.1-4 应如何修改QUICKSORT,才能使其按非增序进行排序?

在 PARTITION 中比p大的元素移到左边,比p小的在右边。


最后

以上就是无情衬衫为你收集整理的《算法导论》笔记 第7章 7.1快速排序的描述【笔记】【习题】的全部内容,希望文章能够帮你解决《算法导论》笔记 第7章 7.1快速排序的描述【笔记】【习题】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部