算法导论习题—堆排序快速排序
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法导论习题—堆排序快速排序相关的知识,希望对你有一定的参考价值。
算法基础习题—堆排序、快速排序
- 1. 1. 1.(堆排序)对于一个按升序排列的包含n个元素的有序数组A来说,HEAPSORT的时间复杂度是多少?如果A是降序的呢?
- ( 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/lgα,最大深度大约是 − l g n / l g ( 1 − α ) -lgn/lg(1-\\alpha) −lgn/lg(1−α)(无需考虑整数舍入问题)。
- ( 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α 1−2α.
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 BUILD−MAX−HEAP构造大顶堆 ( ( (构造小顶堆同理 ) ) ),而调用一次 B U I L D − M A X − H E A P B\\smallUILD-MAX-HEAP BUILD−MAX−HEAP需要的时间为 O ( O( O( n ) n) n),调用 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAX−HEAPIFY需要时间为 O ( lg n ) O(\\lg n) O(lgn), n n n个元素需要调用 n − 1 n-1 n−1次 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAX−HEAPIFY,故时间复杂度为 ∑ 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=1n−1i+lgi=lg((n−1)!)=Θ(nlgn)。
对于降序的数组 A A A,在构造大顶堆时的速度更快,但仍然是线性时间内,即时间复杂度 O ( n ) O(n) O(n),而调用 M A X − H E A P I F Y M\\smallAX-HEAPIFY MAX−HEAPIFY的时间复杂度与升序排列时相同,所以 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/lgα,最大深度大约是 − 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=−lg(1−α)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α 1−2α.
证:要产生比
1
−
α
:
α
1-\\alpha:\\alpha
1−α:α更平衡的划分,
∵
0
<
α
≤
1
2
∴
1
−
α
≥
α
∵0<\\alpha≤\\cfrac12\\enspace∴1-\\alpha≥\\alpha
∵0<α≤21∴1−α≥α,则有
α
+
α
=
2
α
α+α=2α
α+α=2α比例的数会产生比
1
−
α
:
α
1 - \\alpha: \\alpha
1−α:α更不平衡的划分,则
P
以上是关于算法导论习题—堆排序快速排序的主要内容,如果未能解决你的问题,请参考以下文章