外部排序: 一、定義問題 外部排序指的是大文件的排序,即待排序的記錄存儲在外存儲器上,待排序的文件無法一次裝入內存,需要在內存和外部存儲器之間進行多次數據交換,以達到排序 整個文件的目的。外部排序最常用的算法是多路歸並排序,即將原文件分解成多個能夠一次性裝入內存的部分,分別 ...
定義: 按可用內存大小,將外存上的記錄文件分成若干個歸並段 segments 依次讀入內存並利用有效的外部排序方法進行排序 將排序后的有序子文件寫入外存 實現: 利用敗者樹進行k路歸並,使得每次歸並在k個記錄中選出最小記錄僅需進行次 二叉樹的深度 比較,從而使總的歸並時間為。其中,m為初始歸並段個數,n為總記錄數,每次比較時間。 敗者樹: 典型的 路敗者樹如下圖: 直觀的,敗者樹是一棵完全二叉樹, ...
2013-09-12 15:11 0 7176 推薦指數:
外部排序: 一、定義問題 外部排序指的是大文件的排序,即待排序的記錄存儲在外存儲器上,待排序的文件無法一次裝入內存,需要在內存和外部存儲器之間進行多次數據交換,以達到排序 整個文件的目的。外部排序最常用的算法是多路歸並排序,即將原文件分解成多個能夠一次性裝入內存的部分,分別 ...
來來來,根據這篇文章,學一下敗者樹吧: http://blog.csdn.net/whz_zb/article/details/7425152 一、勝者樹 勝者樹的一個優點是,如果一個選手的值改變了,可以很容易地修改這棵勝者樹。只需要沿着從該結點到根結點的路徑修改這棵 ...
外部排序(歸並排序) 定義 基本思想及步驟 步驟 1.思想 一 2.思想 二 實現操作 1.二路歸並 1.1.c 遞歸 非遞歸 ...
歸並排序既可以進行內部排序也可以進行外部排序。歸並排序的時間復雜度O(N*lgN),空間復雜度為O(N) 在這種情況下可以使用外部歸並排序: 若外存中還有N個文件記錄,不能一次性讀入內存,可以將外存中的文件記錄分成若干長度為L的可以讀進內存的段,並依次讀入內存進行內部排序,將有序子文件(歸並段 ...
寫在前面的 2012年3月25日買下《編程珠璣》,很期待但不知道它能給我帶來什么! 編程珠璣,字字珠璣。但是翻譯有點拗口,有時候整句話讀下來都不知道在講什么,多少有點掩飾了珠璣的魅力,真懷疑是不是直接有道翻譯了。 位圖數據結構法 在“開篇”的里,講述了排序的一個問題,大意就是,對一個“最多 ...
移入輸出緩沖區。常見的方法是基於敗者樹的多路替代選擇歸並排序方法。 在敗者樹中,每個葉節點存放各 ...
個人認為,外部排序是我們在學習過程中接觸到的一個比較重要的算法,它既包含了基本的排序算法,又考察了對文件IO以及內存的理解,還展示了最基本的程序優化思想,可以說能夠寫好一個外部排序,就說明基本的編程能力已經過關了。本文將對整個外部排序的過程進行詳細的分析,並介紹兩個經典算法,最后附上完整的程序代碼 ...
當需要對一個大文件進行排序時,計算機內存可能不夠一次性裝入所有數據,解決辦法是歸並。歸並的大概做法是將大文件分為若干段,依次讀入內存進行排序,排序后再重新寫入硬盤。這些排好序的片段成為順串。然后對這些順串進行逐躺歸並,使歸並段逐漸由小變大,最終使整個文件有序。要使用歸並就得考慮兩個問題,一個是 ...