首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速排序中枢轴的选择

快速排序中枢轴的选择
EN

Stack Overflow用户
提问于 2017-05-17 15:56:24
回答 2查看 1.1K关注 0票数 0

快速排序中的分区元素的理想选择是

(A)清单的第一要素 (B)清单的最后一项内容 (C)名单中随机选择的元素 (D)名单的中位数

答案是(A),但我认为应该是(D)。我哪里错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-17 19:55:31

答:(D)名单的中位数

每次如果我们以中位数作为枢轴元素,using partition algorithm it takes O(n) time .then将中间值替换为最后一个元素(算法的a/c表示您在这里选择的枢轴,我假设最后一个元素为枢轴)。它将使用O(1) constant time to replace last element with median,每次它将问题分成2半

T(n) = O(n) + 2T(n/2)用主定理求解,得到复杂度为O(nlogn)

在上述方程中,O(n) is in case of Partition algorithm

票数 0
EN

Stack Overflow用户

发布于 2017-05-17 16:01:15

选择(A)或(B)将导致快速排序出现最糟糕的情况,时间复杂度为O(n平方)。

随机选择会偏离这种糟糕的性能,该算法将有效地运行。

选择中间元素仍足以防止算法性能不佳。问题是,它是一个常数因子,每次迭代速度较慢。

所以(C)或(D)都可以。

来自维基百科

在快速排序的早期版本中,分区的最左边元素通常被选择为pivot元素。不幸的是,这会导致已经排序的数组出现最坏的情况,这是一个相当常见的用例。通过选择支点的随机指数,选择分区的中间索引,或者(特别是较长的分区)为支点选择分区的第一个、第一个和最后一个元素的中值,很容易解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44029694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档