插入排序、归并排序和快速排序的最坏情况运行时间分别为:
(A) Θ(n log n), Θ(n log n) 和 Θ(n 2 )
(B) Θ(n 2 )、Θ(n 2 ) 和 Θ(n Log n)
(C) Θ(n 2 )、Θ(n log n) 和 Θ(n log n)
(D) Θ(n 2 )、Θ(n log n) 和 Θ(n 2 )答案: (D)
解释:
- 插入排序在最坏的情况下需要 Θ(n 2 ),因为我们需要运行两个循环。外环需要一个一个的选择一个元素插入到正确的位置。内循环用于两件事,找到要插入的元素的位置并将所有排序的较大元素向前移动一个位置。因此,最坏情况的递归公式是 T(n) = T(n-1) + Θ(n)。
- 归并排序在所有情况下都需要 Θ(n Log n) 时间。我们总是将数组分成两半,对两半进行排序并合并它们。递归公式为 T(n) = 2T(n/2) + Θ(n)。
- 在最坏的情况下,QuickSort 需要 Θ(n 2 )。在 QuickSort 中,我们将一个元素作为主元并围绕它对数组进行分区。在最坏的情况下,选取的元素始终是角元素,递归公式变为 T(n) = T(n-1) + Θ(n)。最坏情况发生时的一个示例场景是,数组已排序并且我们的代码始终选择一个角元素作为枢轴。
这个问题的测验