有10M的数据在磁盘里面,而你的内存只有1M
1.求top10
这种不需要考虑内存,直接维护一个10个数据的堆就可以了
2.排序
这个就是要多路归并
1.归并排序的空间复杂度是o(2n)的样子,所以1M大概可以排500k的数据 ,不过考虑到栈开销什么的 我看别人都说是250k
2.那么10M的数据就得分大概分成40份的样子吧
先用把每一份都在内存里面排序,然后存入到磁盘里面去
在维护一个大小为40的数组什么的吧 ,读出40份的每份第一个元素,进行多路归并
每次归并之后把数据存到磁盘里面,再重复归并。