單機處理1T檔案的計算方案

2021-09-20 07:20:49 字數 794 閱讀 5655

題目要求:1t大小的檔案,按行儲存,檔案所有行中,只有兩行是重複的,選出重複的行;提高的裝置為一台計算機,記憶體可以選擇128m,64m或256g

輸入:1t檔案

輸出:重複的行

第一種方案:

思路:分堆,縮小範圍查詢

載入一部分到記憶體中,按行讀取,每一行取對應的hashcode,根據 (行hashcode)%2000 的值,,存放在對應的位置(0-1999),重複的行肯定在同乙個值中,遍歷這2000個陣列,找到重複的行。

共有兩次讀取i/o操作

第二種方案:

如果檔案中存放的是亂序的數字,每一行乙個數字,將所有的數字進行排序

思路:按數值範圍分組,組內快速排序,再追加

劃分多個區間小檔案,載入一部分到記憶體中,讀取每一行,遍歷檔案,將讀取的數字存放在對應的區間檔案中,這些區間小檔案是小檔案區間有序,區間內無序,將這些檔案一次讀入記憶體,先快速排序,再追加到上乙個檔案末尾,這樣,完成了全排序

共有兩次i/o操作,比較次數繁瑣

第三種方案:

如果檔案中存放的是亂序的數字,每一行乙個數字,將所有的數字進行排序

思路:按檔案大小劃分成多個塊,在塊內快速排序,然後歸併實現全排序

先選取50m檔案,載入到記憶體中,讀取檔案,進行快速排序,然後再載入50m檔案,同樣進行快速排序,這樣,多個檔案塊就形成了塊內有序,塊間無序,然後再對這多個檔案塊進行歸併排序,從而實現全排序

以上三種方案的簡單示意圖,如圖所示:

T 1 NOIP 2000 計算器的改良

題目背景 ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。題目描述 為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x 8 6a 5...

Oracle 資料日誌檔案丟失的處理方案

oracle 資料日誌檔案丟失的處理方案 案例如下 1.sqlplus nolog conn sys ticket as sysdba shutdown immediate 2.刪除資料庫日誌檔案 3.startup mount 4.檢視日誌檔案的組編號 select group member fr...

《文字檔案的處理》單元測驗 1

使用more命令逐屏顯示文字檔案時,使得顯示內容上滾一行而不是滾動一屏,應按下哪個鍵?回車 linux中用來實現計數功能,比如 統計系統有多少個登入使用者,實現計數功能的命令是 wc l 乙個應用程式的c語言源程式通過printf語句在標準輸出輸出資訊,執行時只要使用輸出重定向機制,不需要修改原先的...