【问题标题】:Comparison based sorting is WC min time nlogn, so what about best/average case基于比较的排序是WC min time nlogn,那么最好/平均情况呢
【发布时间】:2020-08-03 09:49:18
【问题描述】:

Cormen 中有一个定理说... (第 8.1 节) “对于基于比较的排序技术,您无法使用算法对给定列表进行排序,在最坏的情况下,这需要的时间少于 nlogn 时间(比较)” IE。 对于基于比较的排序技术,最坏情况的时间复杂度是Omega (nlogn)...

现在我正在搜索的是,是否存在一个陈述,以防最好的情况..甚至是平均情况 其中声明如下:

你不能有一个排序算法,它花费的时间少于一些 X 来排序给定的元素列表......在最好的情况下

基本上我们有最佳案例算法的任何下限。甚至事实上对于普通情况。 (我尽力找到这个,但在任何地方都找不到)。还请告诉我我提出的观点是否值得。

【问题讨论】:

  • 您应该能够推断出其中一些算法的最佳情况(提示:您能否确定数组是否已排序而至少查看所有元素? ),但更全面的列表 is given on the wiki.
  • @N.Wouda 所以你的意思是说我们不能像对 Worst case 所做的那样正式定义一个语句..?
  • 任何基于比较的排序算法都可以使用代码来检查数组是否已经排序。该检查通常是浪费时间,但不会影响算法的理论时间复杂度。因此,基于比较的排序的最佳时间是检查数组是否已经排序的时间。

标签: algorithm time-complexity binary-search-tree graph-theory binary-search


【解决方案1】:

好问题!定义“平均案例”复杂性的挑战是您必须问“平均超过什么?

例如,如果我们假设数组的元素有相同的概率出现在 n! n 个元素的可能排列,那么比较排序的 Ω(n log n) 界限仍然成立,尽管我似乎记得证明这一点相当复杂。

另一方面,如果我们假设数据存在趋势(例如,您正在测量一天中的温度,您知道它们通常呈上升趋势,然后下降)。许多现实世界的数据集看起来像这样,并且有像 Timsort 这样的算法可以利用这些模式来提高性能。因此,这里的“平均”可能意味着“对所有可能的图进行平均,这些图由一个上升然后下降的序列形成,并添加了噪声项。”我没有遇到任何人在这些案例中分析算法,但我确信那里已经完成了一些工作,甚至可能有一些不太为人所知的不错的平均案例度量。

【讨论】:

  • 首先感谢您的回答。但这是否意味着它在 best 和 avg case 中都是 Omega nlogn?
  • Bcoz 在 Cormen 的那本书中,证明是考虑到 n!叶子,所以它们应该小于 2^h,因此 h 不能大于 nlogn..?但是我什至无法想到我们应该如何进行最佳/平均案例计算的方法..它会是相同的答案还是其他什么..bcoz无论如何在严格的二叉树中一半的节点仍然在叶级别,因此复杂性将为他们登录..因此总计 nlogn 的顺序......(我可能错了。请正确)
  • 假设我们正在处理真正的随机排列,是的,任何排序算法的平均和最差情况性能都必须至少为 Omega(n log n)。
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多