算法导论习题—堆排序快速排序

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法导论习题—堆排序快速排序相关的知识,希望对你有一定的参考价值。

算法基础习题—堆排序、快速排序

1. 1. 1.(堆排序)对于一个按升序排列的包含n个元素的有序数组A来说,HEAPSORT的时间复杂度是多少?如果A是降序的呢?

​ 对一个按升序排列的 n n n个元素的有序数组 A A A,采用 H E A P S O R T H \\smallEAPSORT HEAPSORT时需要通过 B U I L D − M A X − H E A P B\\smallUILD-MAX-HEAP BUILDMAXHEAP构造大顶堆 ( ( (构造小顶堆同理 ) ) ),而调用一次 B U I L D − M A X − H E A P B\\smallUILD-MAX-HEAP BUILDMAXHEAP需要的时间为 O ( O( O( n ) n) n),调用 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAXHEAPIFY需要时间为 O ( lg ⁡ n ) O(\\lg n) O(lgn) n n n个元素需要调用 n − 1 n-1 n1 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAXHEAPIFY,故时间复杂度为 ∑ i = 1 n − 1 i + lg ⁡ i = lg ⁡ ( ( n − 1 ) ! ) = Θ ( n lg ⁡ n ) \\sum_i=1^n-1i+\\lgi=\\lg((n-1)!)=\\Theta(n\\lg n) i=1n1i+lgi=lg((n1)!)=Θ(nlgn)

​ 对于降序的数组 A A A,在构造大顶堆时的速度更快,但仍然是线性时间内,即时间复杂度 O ( n ) O(n) O(n),而调用 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAXHEAPIFY的时间复杂度与升序排列时相同,所以 A A A为降序时的时间复杂度也为 Θ ( n lg ⁡ n ) \\Theta(n\\lg n) Θ(nlgn)

( a ) . (a). (a).(快速排序)假设快速排序的每一层所做的划分的比例都是 1 − α : α 1-\\alpha:\\alpha 1α:α,其中 0 < α ≤ 1 / 20 < α ≤ 1 / 2 0<\\alpha\\leq 1/20<α≤1/2 0<α1/20<α1/2且是一个常数。试证明:在相应的递归树中,叶节点的最小深度大约为 − l g n / l g α -lgn/lg\\alpha lgn/l,最大深度大约是 − l g n / l g ( 1 − α ) -lgn/lg(1-\\alpha) lgn/lg(1α)(无需考虑整数舍入问题)。

​ 证:对于递归树中的叶结点深度,最小的深度由划分比例中较小的分支决定,对于 0 < α ≤ 1 / 2 0<α≤1/2 0<α1/2,则当到达叶结点时,深度 h h h满足 α h n = 1 \\alpha^hn=1 αhn=1,即 h = log ⁡ α 1 n = − lg ⁡ n lg ⁡ α h=\\log_\\alpha\\frac1n=-\\cfrac\\lg n\\lg\\alpha h=logαn1=lgαlgn,则对应最大深度就是取 1 − α 1-\\alpha 1α时,同理可此时深度满足 ( 1 − α ) h n = 1 (1-\\alpha)^hn=1 (1α)hn=1,对应深度即 h = − lg ⁡ n lg ⁡ ( 1 − α ) h=-\\cfrac\\lg n\\lg(1-\\alpha) h=lg1αlgn

( b ) . (b). (b).试证明:在一个随机输人数组上,对于任何常数 0 < α ≤ 1 / 2 0<α≤1/2 0<α1/2 P A R T I T I O N PARTITION PARTITION 产生比 1 − α : α 1-α:α 1α:α更平衡的划分的概率约为 1 − 2 α 1 - 2α 12α.

​ 证:要产生比 1 − α : α 1-\\alpha:\\alpha 1α:α更平衡的划分, ∵ 0 < α ≤ 1 2 ∴ 1 − α ≥ α ∵0<\\alpha≤\\cfrac12\\enspace∴1-\\alpha≥\\alpha 0<α211αα,则有 α + α = 2 α α+α=2α α+α=2α比例的数会产生比 1 − α : α 1 - \\alpha: \\alpha 1α:α更不平衡的划分,则 P

以上是关于算法导论习题—堆排序快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法导论笔记——第六七章 堆排序和快速排序

算法导论第七章快速排序

排序算法堆排序 (算法导论学习)

《算法导论》学习摘要chapter-6——堆排序

九大排序算法及其实现- 插入.冒泡.选择.归并.快速.堆排序.计数.基数.桶排序

算法排序之堆排序