如果需要按已排序的顺序维护链表,将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 )。这个问题的测验