《算法导论》第三版第7章 快速排序 练习&思考题 个人答案

本文详细解析《算法导论》第三版中关于快速排序的描述、性能、随机化版本及分析。涵盖7章的所有练习题,包括Hoare划分的正确性、相同元素值的快速排序、栈深度分析等关键问题,深入探讨快速排序的性能边界和优化策略。
摘要由CSDN通过智能技术生成

7.1 快速排序的描述

7.1-1

解:
13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11
9, 19, 13, 5, 12, 8, 7, 4, 21, 2, 6, 11
9, 5, 13, 19, 12, 8, 7, 4, 21, 2, 6, 11
9, 5, 8, 19, 12, 13, 7, 4, 21, 2, 6, 11
9, 5, 8, 7, 12, 13, 19, 4, 21, 2, 6, 11
9, 5, 8, 7, 4, 13, 19, 12, 21, 2, 6, 11
9, 5, 8, 7, 4, 2, 19, 12, 21, 13, 6, 11
9, 5, 8, 7, 4, 2, 6, 12, 21, 13, 19, 11
9, 5, 8, 7, 4, 2, 6, 11, 21, 13, 19, 12
return 8

7.1-2

解:r;可以检查所有元素的值都相同的情况

7.1-3

易证。

7.1-4

解:第四行的≤改为≥。

7.2 快速排序的性能

7.2-1

证明:
T ( n ) ≥ c 1 ( n − 1 ) 2 + c n = c 1 n 2 − 2 c 1 n + c 1 + c n ≥ c 1 n 2 T(n)\geq c_1(n-1)^2+cn=c_1n^2 - 2c_1n+c_1+cn\geq c_1n^2 T(n)c1(n1)2+cn=c1n22c1n+c1+cnc1n2
( c − 2 c 1 ) n + c 1 ≥ 0 (c-2c_1)n+c_1\geq 0 (c2c1)n+c10
c 1 ≤ c 2 c_1 ≤ \frac{c}{2} c12c
T ( n ) ≤ c 2 ( n − 1 ) 2 + c n = c 2 n 2 − 2 c 2 n + c 2 + c n ≤ c 2 n 2 T(n) ≤ c_2(n-1)^2 + cn = c_2n^2 - 2c_2n + c_2 + cn ≤ c_2n^2 T(n)c2(n1)2+cn=c2n22c2n+c2+cnc2n2
( c − 2 c 2 ) n + c 2 ≤ 0 (c - 2c_2)n + c_2\leq 0 (c2c2)n+c20
c 2 ≥ c 2 c_2 ≥ \frac{c}{2} c22c
……

7.2-2

解: Θ ( n 2 ) Θ(n^2) Θ(n2)

7.2-3

证明(翻译自参考答案):所有元素降序排列时我们运行的是“最坏情况PARTITION”。它每一步只将要考虑的子数组大小减1,运行时间 Θ ( n 2 ) Θ(n^2) Θ(n2)

7.2-4

本题证明翻译自https://ita.skanev.com/07/02/04.html
证明:
一个简单直观的论证就足够了。
数组排序越多,插入排序的工作量就越少。即,INSERTION-SORT是Θ(n+d),其中d是阵列中的逆序对个数。 在上面的例子中,逆序对往往很少,因此插入排序将接近线性。
另一方面,如果PARTITION确实选择了不在逆序对中的元素,它将产生一个空分区。由于存在逆序对很少,QUICKSORT很可能产生空分区。

7.2-5

证明:
(1)最小深度:
αmn=1
m=-logαn=-lgn/lgα
(2)最大深度:
(1-α)Mn=1
M=-lgn/lg(1-α)

7.2-6

证明:
n l n_l nl和n r _r r代表左右两边的比例,更均衡表示 ∣ n l − n r ∣ &lt; 1 − 2 α |n_l-n_r| &lt; 1-2α nlnr<12α
0 &lt; n l &lt; α 0&lt;n_l&lt;α 0<nl<α时, ∣ n l − n r ∣ &gt; 1 − 2 α |n_l-n_r| &gt; 1-2α nlnr>12α
α &lt; n l &lt; 1 − α α&lt;n_l&lt;1-α α<nl<1α时, ∣ n l − n r ∣ &lt; 1 − 2 α |n_l-n_r| &lt; 1-2α nlnr<12α
1 − α &lt; n l &lt; 1 1-α&lt;n_l&lt;1 1α<nl<1时, ∣ n l − n r ∣ &gt; 1 − 2 α |n_l-n_r| &gt; 1-2α nlnr>12α
n l n_l nl是均匀分布的,所以 p ≈ 1 − 2 α p≈1-2α

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值