之前有提到过用bitmap的方式来解决海量数据排序问题,但这个问题的前提是这些待排序数字不能太稀疏,因为其思想就在于将每个四字节数字转化为一个bit,假设稀疏,那连着很多bit都没有数字就白搞了。
除了上述情况外,就算不稀疏,也有可能通过这种奇技淫巧也无法压缩下去。
所以这时候就需要采取外部排序,把数据分成若干块,分别排好序,从每个块里挑选最小的,进入堆。此时堆中最小的就是全局最小的,堆顶元素i出堆后,从堆顶元素i所在块里再拿出最小的,重复此过程,直到结束。
之前有提到过用bitmap的方式来解决海量数据排序问题,但这个问题的前提是这些待排序数字不能太稀疏,因为其思想就在于将每个四字节数字转化为一个bit,假设稀疏,那连着很多bit都没有数字就白搞了。
除了上述情况外,就算不稀疏,也有可能通过这种奇技淫巧也无法压缩下去。
所以这时候就需要采取外部排序,把数据分成若干块,分别排好序,从每个块里挑选最小的,进入堆。此时堆中最小的就是全局最小的,堆顶元素i出堆后,从堆顶元素i所在块里再拿出最小的,重复此过程,直到结束。