【发布时间】:2019-01-07 11:25:24
【问题描述】:
已知大小为 n 的数组 A 已排序,但前 k 个元素和后 k 个元素除外,其中 k 是常数。以下哪种算法最适合对数组进行排序?
A) Quicksort
B) Bubble sort
C) Selection Sort
D) Insertion Sort
给出的答案是 D。
无法理解这是如何工作的,如果还给出了合并排序,答案会是什么?
【问题讨论】:
-
我想有一些假设
k明显小于n?否则你可以创建k = n/2并且整个数组将是未排序的......K和k也是一样的吗? -
是的 K 和 k 在这里是一样的。现已更正。
-
这就是它令人困惑的原因......我也有同样的疑问。
-
也许应该有一些限制才能使插入排序成为正确答案。
-
关于您的“奖励”问题:是的,我认为合并排序 会 是最快的,O(2klogk + n) (=O(n) for const.k ) 用于对两个未排序的段进行合并排序,然后合并三个部分。