代码改变世界

算法导论-快速排序习题解

2012-03-05 13:54  meteorgan  阅读(648)  评论(0编辑  收藏  举报

7.2-6 证明:对于任何常数 0 < a <= 1/2,在一个随机输入数组上,过程PARITITION产生比 1-a:a更对称的划分的概率约为1-2a。

  解:假设数组长度为n,在两个点可能产生1-a:a的划分:na, (1-a)a;产生比(1-a):a更差的划分的点是1..na, (1-a)n..n,占所有点个数的比率为2a,所以产生更对称划分的概率为1-2a。

 

 7-4.6 考虑对PARTITION过程做这样的修改:从数组A中随机地选出三个元素,并围绕这三个数的中数(即这三个元素中间值)对它们进行划分。求出以a的函数形式的表示的,最坏情况中a:(1-a)划分的概率。

  解:随机挑选3个元素的情况有\binom{n}{3}种,其中中位数为na,(1-a)n的各有(na - 1)(n-na), (n-na-1)(n-na)种。求概率即可。

 

7-5 “三数取中”划分

  解:a) 理由同上题。p_{i} = \frac{(i-1)(n-i)}{\binom{n}{3}}

         b) 上式除以1/n求n趋近无穷大时的极限,为3/2。

         c) 在 (1/3)n <= i <= (2/3)n区间内对pi积分,在求n趋近无穷大时的极限,为13/27,显然优于一般实现中的1/3。

              d)略

 

7-6 对区间的模糊排序

  解: a) 重点在于:如果两个区间有交集则认为这两个区间相等,如果所有主元素的交集在左边的区间相等;所有与主元素交集在右边的区间相等。注意,这里的相等不具有传递性。每次划分中将数组分为三个部分:1. 小于主元素的区间;2.大于主元素的区间;3.与主元素相等的区间。每次划分后仅需将1, 2部分继续递归划分排序,3中元素仅需再进行一次划分即可有序。如果各区间重合的越多,则1, 2中元素越少,排序也越容易。

    b) 期望运行时间与快排相同。当所有区间都相等时: 1, 2中元素为空,2次划分即可完成排序。