为什么这个引用关于quicksort的最坏情况运行时使用Ω表示法?

时间:2015-02-18 17:24:12

标签: big-o time-complexity quicksort

我刚从算法简介

中读到这段摘录
  

当分区不平衡时,快速排序需要Ω(n 2 )时间

我如何解释这个Ω(n 2 )?为什么是Ω?我们可以在这里使用big-O表示法吗?

2 个答案:

答案 0 :(得分:3)

Big-O表示法,你可能习惯用来描述上界。如果我们说算法有运行时O(n 2 ),我们的意思是算法的运行时最多 某些二次函数。您可以将O符号视为“小于或等于”符号。

Big-Ω表示法就像big-O表示法,但用于描述下界。如果我们说算法有运行时Ω(n 2 ),我们的意思是算法的运行时间至少一些二次函数。您可以将Ω表示法视为“大于或等于”符号。

当我们谈论算法的最坏情况运行时,big-O表示法通常是不合适的。假设我声称算法的最坏情况运行时为O(n 2 )。我所说的是该算法的运行时最多 一些二次函数。也就是说,最坏情况的运行时可能会低很多。作为类比,让我们说我声称我最多 10,000岁。这并不是说得太多 - 我肯定最多只有一万岁,但实际上我比他年轻得多。

另一方面,假设我声称算法的最坏情况运行时为Ω(n 2 )。现在我说算法的最坏情况运行时至少一些二次函数。这实际上说了些什么 - 回到我们之前的比喻,如果我告诉你一些岩石至少有十亿年的历史,它实际上告诉你一些东西 - 它已经很老了!它类似于最坏情况的运行时为Ω(n 2 ) - 我告诉你它至少是二次,排除任何更小的。

希望这有帮助!

答案 1 :(得分:0)

实际上甚至是Theta(n ^ 2)所以它也是Omega(n ^ 2),但是当分区不平衡时声称“快速排序为O(n ^ 2)”并不是非常有用的信息 - 因为{{ 1}}是O(nlogn)的子集。换句话说,所有O(nlogn)(如快速排序平均情况)也是O(n^2)

大O给出了上限,但是在这里,我们想要显示下限 - 在最坏的情况下,我们不能比O(n^2)更好,而不是我们不能比它更糟,因此我们是没有使用n^2。 因此,即使最好的快速排序情况是O(n^2)(但不是O(n^2)) - 因此说快速排序是O(n ^ 2)并不是非常有用。