有一個1G大小的一個文件,裏面每一行是一個詞,詞的大小不超過16字節,內存限制大小是1M。返回頻數最高的100個詞。排序
1.分治: 順序讀文件中,對於每一個詞c,取hash(c)%2000,而後按照該值存到2000個小文件中。這樣每一個文件大概是500k左右。內存
若是其中的有的文件超過了1M大小,還能夠按照相似的方法繼續往下分,直到分解獲得的小文件的大小都不超過1M。hash
2.hash遍歷: 對每一個小文件,用hash的方式統計每一個文件中出現的詞以及相應的頻率class
3.堆遍歷: 用 最小堆取出出現頻率最大的100個詞,並把100個詞及相應的頻率存入文件,這樣又獲得了5000個文件。遍歷
4.歸併整合方法
下一步就是把這5000個文件進行歸併(相似與歸併排序)的過程了。統計