首頁 >後端開發 >php教程 >面試題,給你256M的內存,對10G的文件進行排序(文件每行1個數字)

面試題,給你256M的內存,對10G的文件進行排序(文件每行1個數字)

WBOY
WBOY原創
2016-08-10 09:07:185536瀏覽

給你256M的內存,對10G的文件進行排序(文件每行1個數字),如何實現? 對10G的文件進行查找如何實現?統計10G檔案每個關鍵字出現的次數如何實現

回覆內容:

給你256M的內存,對10G的文件進行排序(文件每行1個數字),如何實現? 對10G的文件進行查找如何實現?統計10G檔案每個關鍵字出現的次數如何實現

用時間換空間唄
具體的實作都是分批載入檔案,然後計算

java嗎 用nio和用mapreduce的思想

不懂php,但看這個題目似曾相識。
說說思路吧。
1、排序的實作
這是一個單機外部排序的典型題目。具體的方法就是先分塊進行排序然後多路歸併成輸出檔。
2、查找
如果不能對文件進行處理的話,只能遍歷進行查找。
如果是可以對文件進行處理的話,那麼上面已經排序好了文件,就可以進行二分查找
3、統計
如果不能對文件進行處理的話,還是沒有好的辦法,只能是遍歷一遍。
如果已經拍好序了,那麼就可以直接二分查找。在找到的位置向兩頭搜尋出現的個數。

可以看看《程式珠璣》這本書,好像就有這個問題。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn