個人認為,外部排序是我們在學習過程中接觸到的一個比較重要的算法,它既包含了基本的排序算法,又考察了對文件IO以及內存的理解,還展示了最基本的程序優化思想,可以說能夠寫好一個外部排序,就說明基本的編程能力已經過關了。本文將對整個外部排序的過程進行詳細的分析,並介紹兩個經典算法,最后附上完整的程序代碼 ...
個人認為,外部排序是我們在學習過程中接觸到的一個比較重要的算法,它既包含了基本的排序算法,又考察了對文件IO以及內存的理解,還展示了最基本的程序優化思想,可以說能夠寫好一個外部排序,就說明基本的編程能力已經過關了。本文將對整個外部排序的過程進行詳細的分析,並介紹兩個經典算法,最后附上完整的程序代碼。 . 問題描述 由於在現實環境中,有時候需要對一個非常大的文件進行排序,而計算機內存是有限的,當數據 ...
2013-09-16 22:57 3 3959 推薦指數:
個人認為,外部排序是我們在學習過程中接觸到的一個比較重要的算法,它既包含了基本的排序算法,又考察了對文件IO以及內存的理解,還展示了最基本的程序優化思想,可以說能夠寫好一個外部排序,就說明基本的編程能力已經過關了。本文將對整個外部排序的過程進行詳細的分析,並介紹兩個經典算法,最后附上完整的程序代碼 ...
如何生成順串,一個是如何對順串進行歸並。 置換選擇算法 先考慮如何生成順串。我們知道,減少順串 ...
置換——選擇排序 土辦法構造初始歸並段 同時最多放兩個到輸入緩沖區,只能讀入兩塊的內容,然后把這些記錄在內存排序之后,在輸出寫回外存,這樣就得到了一個初始歸並段。 由於內部排序的內存工作區只能容納6個記錄(例子)。 可以用一片更大的內存區域來進行內部排序(如:可容納18個記錄) 用於 ...
敗者樹 多路平衡歸並帶來的問題 外部排序時間開銷=讀寫外存的時間+內部排序所需時間+內部歸並所需 時間 \[歸並趟數S=\lceil log_kr \rceil ,歸並路數k增加,歸並趟數S減少,讀寫磁盤總次數減少 \] 使用k路平衡歸並策略,選出一個最小元素需要對比關鍵字(k-1 ...
來來來,根據這篇文章,學一下敗者樹吧: http://blog.csdn.net/whz_zb/article/details/7425152 一、勝者樹 勝者樹的一個優點是,如果一個選手的值改變了,可以很容易地修改這棵勝者樹。只需要沿着從該結點到根結點的路徑修改這棵 ...
勝者樹和敗者樹都是完全二叉樹,是樹形選擇排序的一種變型。每個葉子結點相當於一個選手,每個中間結點相當於一場比賽,每一層相當於一輪比賽。 不同的是,勝者樹的中間結點記錄的是勝者的標號;而敗者樹的中間結點記錄的敗者的標號。 勝者樹與敗者樹可以在log(n ...
課本源碼部分 第11章 外部排序 - 敗者樹 ——《數據結構》-嚴蔚敏.吳偉民版 源碼使用說明 鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明 課本源碼合輯 鏈接☛☛☛ 《數據結構》課本源碼合輯 習題集全 ...
勝者樹和敗者樹都是完全二叉樹,是樹形選擇排序的一種變型。每個葉子結點相當於一個選手,每個中間結點相當於一場比賽,每一層相當於一輪比賽。 不同的是,勝者樹的中間結點記錄的是勝者的標號;而敗者樹的中間結點記錄的敗者的標號。 勝者樹與敗者樹可以在log(n)的時間內找到最值。任何一個葉子結點 ...