如何对特定类型的输入进行排序

时间:2013-01-26 13:59:01

标签: algorithm sorting

我有一系列元素,比如a1,a2,...,an。 (n~4 * 10 ^ 7)

输入将主要排序。更具体地说,任何小于a_i的元素都将位于左侧,或者非常接近右侧(~300个元素)。

如何有效地对此序列进行排序?

1 个答案:

答案 0 :(得分:0)

你可以使用一堆N个元素来做到这一点,其中N是最大重叠(在你的情况下N = 300)。

以空heap开头。

对于序列中的每个元素:

  1. 将元素添加到堆

  2. 如果堆有多于N个元素,则输出(并从堆中删除)最小元素

  3. 最后输出堆中的其余元素。

    这将具有复杂度O(nlogN)