(针对相同元素值的快速排序)在7.4.2节对随机化快速排序的分析中,我们假设输入元素的值是互异的。在本题中,我们将看看如果这一假设不成立会出现什么情况。
a. 如果所有输入元素的值都相同,那么随机化快速排序的运行时间会是多少?
b.
过程返回一个数组下标
,使得
中的每个元素都小于或等于
,而
中的每个元素都大于
。修改
代码来构造一个新的
,它排列
的元素,返回值是两个数组下标
和
,其中
,且有
•
中的所有元素都相等
•
中的每个元素都小于
•
中的每个元素都大于
与
类似,新构造的
的时间复杂度是
。
c. 将
过程改为调用
,并重新命名为
。修改
的代码构造一个新的
,它调用
,并且只有分区内的元素互不相同的时候才做递归调用。
d. 在
中,应该如何改变7.4.2节中的分析方法,从而避免所有元素都是互异的这一假设?
解
a.
如果数组的所有元素都相同,那么随机化快速排序每次递归产生一个最不均衡的划分,因此运行时间为
。
b.
c.
d.
笔者还没想明白,希望有高手来解答。
代码链接:https://github.com/yangtzhou2012/Introduction_to_Algorithms_3rd/tree/master/Chapter07/Problem_7-2/SameElemQuickSort
算法导论 — 思考题7-2 针对相同元素值的快速排序
猜你喜欢
转载自blog.csdn.net/yangtzhou/article/details/88770348
今日推荐
周排行