【问题标题】:Quicksort omega-notation快速排序欧米茄符号
【发布时间】:2018-05-21 22:19:12
【问题描述】:

快速排序的最佳情况是 n log(n),但每个人都使用 Big-O 表示法将最佳情况描述为 O(n log (n))。根据我对符号的理解,快速排序有 Big-Omega(n log (n)) 和 O(n^2)。这是正确的还是我误解了 Big-Omega 符号?

【问题讨论】:

    标签: time-complexity big-o quicksort


    【解决方案1】:

    Big-O 和 Big-Omega 是描述函数的方式,而不是算法。说 Quicksort 是 O(n^2) 是模棱两可的,因为你没有说你描述的是算法的什么属性。

    算法可能具有最佳情况的时间复杂度和最坏情况的时间复杂度。如果对每个输入大小使用性能最佳或最差的输入,这些是算法的时间复杂度。

    这与描述函数上限和下限的 Big-O 和 Big-Omega 不同。

    时间复杂度是作为输入大小的函数给出的,它可以有自己的上限和下限。

    例如,如果您知道最佳情况并不比 nlogn 差,那么您可以说最佳情况时间复杂度为 O(nlogn)。如果你知道它正是 nlogn,那么说 Theta(nlogn) 会更准确。

    【讨论】:

      【解决方案2】:

      您的详细信息不正确。 Big-O 在技术上应该是最坏的情况。 QuickSort 的平均情况为 O(n log n),最坏情况为 O(n^2)。按照技术定义,QuickSort 的正确 Big-O 是 n^2。但随机获得该性能的机会几乎为零(除非您在已排序的列表上运行 QuickSort),因此 QuickSort 被赋予 n log n 的 Big-O,即使它在技术上不正确。

      另一方面,Big-Omega 在技术上被定义为“至少需要这么长时间”,因此它是一个下限。这意味着 QuickSort 具有 Big-Omega(n log n) 而 n^2 与 QuickSort 和 Big-Omega 无关。

      【讨论】:

      • 没有。从技术上讲,Big O 不应该是最坏的情况。只是某些函数的上限,因此可以应用于最佳、最差和平均情况。
      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2017-08-12
      • 2012-09-15
      • 2011-10-04
      相关资源
      最近更新 更多