如果需要按排序顺序维护链表,将 n 个元素插入空链表的最坏情况时间复杂度是多少?
(A) Θ(n)
(B) Θ(n log n)
(C) Θ(n 2 )
(D) Θ(1)答案: (C)
解释:这个问题模棱两可:“需要保持有序”,可能有两种情况:
- 需要在每一步(每次插入后)按排序顺序维护。
当我们将一个元素插入到空链表中并执行每个元素的排序列表时,将花费 O(n 2 )。
每个插入到已排序链表中的操作都需要 θ(n),因此 n 次操作的总成本是 θ(n 2 )。 - 需要在最后一步(仅在所有插入之后)按排序顺序维护。
当我们将所有元素插入空链表并在插入所有元素后执行排序列表(使用合并排序)时,将花费 O(n log n) 时间。
GATE 的官方答案是 Θ(n 2 )。这个问题的测验