需要对大量无法保存到内存中的整数进行排序。想知道合并排序是否正确?我这样的解决方案,
我不确定这是否是进行大量整数排序的正确方法?
答案 0 :(得分:2)
由于,
它们是整数,大多数是1-100
您需要的只是Counting Sort。
实施起来非常简单。
HashMap<int, int>
的100个整数(或intCounts
)数组(如果您认为32位可以溢出则采用64位整数)inputInteger
进行排序,只需执行intCounts[inputInteger]++
intCounts[i]
会告诉您在大整数集中看到整数i
的次数intCounts
从最低索引迭代到最高索引i
总共intCounts[i]
次答案 1 :(得分:1)
GNU排序程序(与其Unix前身一样)使用内存中排序,然后根据需要进行多次16向合并。请参阅此处的代码以了解更多信息:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/sort.c#n306