這裏可以借鑑快速排序的思想,將整個數據量進行分解,取8位正整數的中間值128,凡是大於這個數的值都放入文件b,小於128的都放入文件a。 然後再按照這種方法一直分解直到任意一邊的數量小於1千萬爲止,然後使用快速排序對這1千萬進行排序,最後將結果存入文件中,然後便不再對該數據集進行處理。 由於內存牽涉到運算的效率和性能,所以,每分解一次,都要將分解的結果放入文件中。 最後就是對這些所有的文件中的結果進行合併,這裏可以考慮用一個鏈表存放所有文件結果集的次序(也是所有排序結果的次序) 所以,總結一下: 1. 使用文件代替以前的數組,對數據按照快速排序的思想進行分解 2. 當某一結果集分解到足夠小,比如小於1千萬時,此時對該數據運用快速排序,然後將排序結果放入文件中,並且不在對該數據集進行處理 3. 合併所有結果,按照遞歸的思想,可以使用一個鏈表記錄那些文件存放了結果集,並且是有序的存放的。 你可以定義一個struct結構體, 其他解決方案: 你也可以採用分佈式的方法進行運算,但是仍然得對所有數據採用快排的思想的分解。 將原任務不僅要分解成較小的規模,還應該考慮到所有的結果方便組裝成爲最總的結果