我正在考虑使用计数排序。但我不认为这是答案,因为k,在这种情况下,是n ^ 2。因此排序时间为O(n + n ^ 2)。另外我认为这将超过存储限制。
有什么想法吗?
感谢。
答案 0 :(得分:2)
你可以使用bottom-up merge sort来实现它,它在O(n log n)中运行,不需要额外的空间(因为它就位)。
答案 1 :(得分:0)
您可以使用Merge Sort的略微修改版本,以便将列表拆分为n个部分而不是一半。合并排序的时间复杂度为O(n log n),但我不知道如何获得编辑后的版本。
如果有人帮助我,我会将其添加到我的答案:)
修改强>
似乎有人已经发明了这个,请参阅@ JSPerfUnkn0wn的回答