1. 程式人生 > >如何將n個有序大檔案,有序的存入一個磁碟?

如何將n個有序大檔案,有序的存入一個磁碟?

如何將n個有序大檔案,有序的存入一個磁碟?
通常會給定一個記憶體空間(如2G),但是每個有序大檔案都在10G以上,所以無法全部讀取到記憶體中進行合併。
這問題是一個歸併排序的運用!

為了方便解說,假設問題中的n=2,並且檔案為升序。並設檔案一為file_one,檔案二為file_two。檔案中的資料用1,2,3,4…來表示

步驟如下:
一、拿到file_one1放入記憶體。
二、拿到file_two1與file_one1進行比較。
①若file_one1<file_two1,則拿到file_one2與file_two1進行對比,直到拿到file_one中的資料大於file_two1則跳到第②步,或者拿到的資料完全佔滿2G記憶體,則存入磁碟。繼續從一步驟開始。
②若file_one1>file_two1,則拿到file_two2與file_one1進行對比,直到拿到file_two中的資料大於file_one1則跳到第①步,或者拿到的資料完全佔滿2G記憶體,則存入磁碟。繼續從一步驟開始。

步驟有些亂,不過這個問題不難,憑自己悟吧,哈哈哈。