程式設計珠璣之第二章習題2

2021-06-28 03:31:32 字數 492 閱讀 2310

問題描述:

給定包含4 300 000 000個32位整數的順序檔案,如何找出乙個至少出現兩次的整數? 

問題解析:

1、假設4 300 000 000個32整數的順序是隨機的。

2、給定的32位整數的個數是4 300 000 000大於2^32-1, 如果其中沒有任何乙個缺失的32整數,那麼重複整數個數就是(4300000000-2^32+1)個。

3、可以通過統計中間值(2^32-1)/2上下的個數來確定重複的數的區間,到這裡使用二分搜尋去找就順理成章了。

4、如果有足夠的記憶體,使用位圖技術就更方便了!

解決方案:

方案1:

1、使用幾個中間檔案,按每次中間值的大小作為臨界值分割整數,統計每個檔案中的應該有的整數個數和實際的整數個數,最終可以確定重複的整數應該在哪個檔案中! 對該檔案排序,使用二分搜尋!

**暫略!

程式設計珠璣之第二章習題7

問題描述 7.在20世紀60年代早期,vic vyssotsky與乙個程式設計師一起工作,該程式設計師需要轉置乙個儲存在磁帶上的4000x4000的矩陣 每條記錄的格式相同,為數十個位元組 他的同事最初提出的程式需要執行50個小時。vyssotsky如何將執行時間減少到半個小時呢?問題解析 1 首先...

程式設計珠璣第二章

a題給定乙個最多包含40億個隨機排列的32位整數的順序檔案,找出乙個不在檔案中一32位整數。1 在檔案中至少存在這樣乙個數?2 如果有足夠的記憶體,如何處理?3 如果記憶體不足,僅可以用檔案來進行處理,如何處理?答案 1 32位整數,包括 2146473648 2146473647,約42億個整數,...

程式設計珠璣第二章總結

分析 如果記憶體足夠的話,可以採取第一章的點陣圖排序法,以o n 的效率就可以解決。如果記憶體不足的話,但是有幾個外部檔案可以儲存資料,那麼就可以採用二分查詢的思想來解決問題 這裡的思路比較巧妙,它不是通常意義上的二分查詢,但是思維模式很相似.我們可以通過掃瞄輸入檔案,將第一位是0的寫入乙個檔案,將...