《算法导论》笔记 第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小的在右边。


本书深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。各自成体系,可以作为独立的学习单元。算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂。说明和解释力求浅显易懂,不失深度和数学严谨性。   本书自第1版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考书。第2版增加了论述算法作用、概率分析与随机算法、线性规划等几。同,对第1版的几乎每一节都作了大量的修订。一项巧妙而又重要的修改是提前引入循环不变式,并在全书中用来证明算法的正确性。在不改变数学和分析重点的前提下,作者将许多数学基础知识从第一部分移到了附录中,并在开始部分加入了一些富有诱导性的题材。   ★经典的算法书,被卓越网,《程序员》等评选为2006年最受读者喜爱的十大IT图书之一。   ★算法领域的标准教材,全球多所知名大学选用    ★MIT名师联手铸就,被誉为“计算机算法的圣经”    ★编写上采用了“五个一”,即一介绍一个算法、一种设计技术、一个应用领域和一个相关话题。    以相当的深度介绍了许多常用的数据结构和有效的算法,使得这些算法的设计和分析易于被各个层次的读者所理解。教学网址、视频课程及在线学习中心,全方位学习模式,内容很丰富。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值