合并排序中插入排序的最坏情况是什么时候?

时间:2013-08-23 17:49:11

标签: algorithm sorting time big-o asymptotic-complexity

最近我从Introduction To Algorithms Edition 3

偶然发现了这个问题

问题2-1:

尽管合并排序在O(n logn)最坏情况时间运行,插入排序在O(n^2)中运行,但后者运行速度更快,适用于小问题规模。考虑对合并排序的修改,其中使用插入排序对 n / k 长度 k 的子列表进行排序,然后使用标准合并机制进行合并。

(A)显示插入排序可以在O(nk)最坏情况时间内对长度为k的n / k个子列表进行排序。


答案是:

Ans:在最坏的情况下,插入排序每个k元素列表需要(k ^ 2)个时间。因此, 排序n / k k个元素列表每个(k ^ 2 n / k)=(nk)最坏情况时间

他们如何从给定数据中得到(k ^ 2 n / k)?我根本不理解这一点,并且非常感谢你的解释。

1 个答案:

答案 0 :(得分:2)

子列表的长度为k,因此每个子列表的插入排序需要k^2。现在,总共有n/k个子列表,因此,n/k * k^2nk。这里的关键理解是,有n/k个子列表,插入排序需要k^2时间对每个子列表进行排序。

另外需要注意的是,知道合并排序有O(n logn)对这个问题实际上并不重要,因为他们没有要求整理整个列表的时间,只是排序时间所有的子列表。