【发布时间】:2018-01-28 12:23:39
【问题描述】:
当以下两种情况之一发生时,最坏情况下普通快速排序的时间复杂度为 O(n^2):
- 输入已按升序或降序排序
- 输入数组中的所有元素都相同
在上述两种情况下,PARTITION 算法会将数组分成两个子部分,一个包含 (n-1) 个元素,第二个包含 0 个元素
为了避免这种糟糕的情况,我们使用另一个版本的 QuickSort,即 Randomized Quick-Sort,其中选择一个随机元素作为枢轴。随机快速排序的预期 T.C 为 theta(nlogn)。
我的问题是,对于什么输入/情况,随机快速排序会导致 O(n^2) 的最差时间复杂度?
【问题讨论】:
-
如果随机枢轴选择器碰巧选择了例如连续N次最小的元素,您将获得最差的性能。这种特殊情况的概率约为 1/n!当然还有更多的案例需要考虑。
标签: algorithm sorting quicksort