在给定O(n)的存储空间的情况下,你能在多长时间内对{1,2,... n ^ 2)范围内的n个元素进行排序?

时间:2011-12-31 00:40:13

标签: sorting

我正在考虑使用计数排序。但我不认为这是答案,因为k,在这种情况下,是n ^ 2。因此排序时间为O(n + n ^ 2)。另外我认为这将超过存储限制。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

你可以使用bottom-up merge sort来实现它,它在O(n log n)中运行,不需要额外的空间(因为它就位)。

答案 1 :(得分:0)

您可以使用Merge Sort的略微修改版本,以便将列表拆分为n个部分而不是一半。合并排序的时间复杂度为O(n log n),但我不知道如何获得编辑后的版本。
如果有人帮助我,我会将其添加到我的答案:)

修改
似乎有人已经发明了这个,请参阅@ JSPerfUnkn0wn的回答