Time complexity 快速排序欧米茄表示法

Time complexity 快速排序欧米茄表示法,time-complexity,big-o,quicksort,Time Complexity,Big O,Quicksort,快速排序的最佳情况是n log(n),但每个人都使用大O表示法将最佳情况描述为O(n log(n))。根据我对符号的理解,快速排序有很大的ω(n log(n))和O(n^2)。这是正确的还是我误解了大欧米茄符号 您的详细信息不正确。从技术上讲,Big-O应该是最坏的情况。快速排序的平均情况为O(n logn),最坏情况为O(n^2)。根据技术定义,快速排序的正确大O是n^2。但是随机获得该性能的机会几乎为零(除非您在已排序的列表上运行QuickSort),因此QuickSort被赋予n log

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

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


另一方面,大欧米茄在技术上被定义为“至少需要这么长的时间”,所以它是一个下限。这意味着快速排序有大ω(n logn),而n^2与快速排序和大ω无关。

大O和大ω是描述函数的方式,而不是算法。说快速排序是O(n^2)是不明确的,因为您并没有说您所描述的算法的属性是什么

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

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

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


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

不。从技术上讲,大O不是最坏的情况。它只是某些函数的一个上界,因此它可以应用于最佳、最差和平均情况。