算法导论 — 思考题7-2 针对相同元素值的快速排序

针对相同元素值的快速排序)在7.4.2节对随机化快速排序的分析中,我们假设输入元素的值是互异的。在本题中,我们将看看如果这一假设不成立会出现什么情况。
  a. 如果所有输入元素的值都相同,那么随机化快速排序的运行时间会是多少?
  b. P A R T I T I O N {\rm PARTITION} PARTITION过程返回一个数组下标 q q q,使得 A [ p . . q − 1 ] A[p..q-1] A[p..q1]中的每个元素都小于或等于 A [ q ] A[q] A[q],而 A [ q + 1.. r ] A[q+1..r] A[q+1..r]中的每个元素都大于 A [ q ] A[q] A[q]。修改 P A R T I T I O N {\rm PARTITION} PARTITION代码来构造一个新的 P A R T I T I O N ’ ( A , p , r ) {\rm PARTITION’}(A, p, r) PARTITION(A,p,r),它排列 A [ p . . r ] A[p..r] A[p..r]的元素,返回值是两个数组下标 q q q t t t,其中 p ≤ q ≤ t ≤ r p ≤ q ≤ t ≤ r pqtr,且有
  • A [ q . . t ] A[q..t] A[q..t]中的所有元素都相等
  • A [ p . . q − 1 ] A[p..q-1] A[p..q1]中的每个元素都小于 A [ q ] A[q] A[q]
  • A [ t + 1.. r ] A[t+1..r] A[t+1..r]中的每个元素都大于 A [ q ] A[q] A[q]
  与 P A R T I T I O N {\rm PARTITION} PARTITION类似,新构造的 P A R T I T I O N ’ {\rm PARTITION’} PARTITION的时间复杂度是 Θ ( r − p ) Θ(r-p) Θ(rp)
  c. R A N D O M I Z E D − P A R T I T I O N {\rm RANDOMIZED-PARTITION} RANDOMIZEDPARTITION过程改为调用 P A R T I T I O N ’ {\rm PARTITION’} PARTITION,并重新命名为 R A N D O M I Z E D − P A R T I T I O N ’ {\rm RANDOMIZED-PARTITION’} RANDOMIZEDPARTITION。修改 Q U I C K S O R T {\rm QUICKSORT} QUICKSORT的代码构造一个新的 Q U I C K S O R T ’ ( A , p , r ) {\rm QUICKSORT’}(A, p, r) QUICKSORT(A,p,r),它调用 R A N D O M I Z E D − P A R T I T I O N ’ {\rm RANDOMIZED-PARTITION’} RANDOMIZEDPARTITION,并且只有分区内的元素互不相同的时候才做递归调用。
  d. Q U I C K S O R T ’ {\rm QUICKSORT’} QUICKSORT中,应该如何改变7.4.2节中的分析方法,从而避免所有元素都是互异的这一假设?
  
  
  a.  
  如果数组的所有元素都相同,那么随机化快速排序每次递归产生一个最不均衡的划分,因此运行时间为 Θ ( n 2 ) Θ(n^2) Θ(n2)
  
  b.
  在这里插入图片描述
  
  c.
  在这里插入图片描述
  d.
  笔者还没想明白,希望有高手来解答。
  
  代码链接:https://github.com/yangtzhou2012/Introduction_to_Algorithms_3rd/tree/master/Chapter07/Problem_7-2/SameElemQuickSort

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值