数据结构之外部排序:归并排序法
生活随笔
收集整理的這篇文章主要介紹了
数据结构之外部排序:归并排序法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
外部排序:歸并排序法
- 思維導圖:
- 外部歸并排序的原理:
- 外部歸并排序的性能:
- 歸并排序法的優化:
思維導圖:
外部歸并排序的原理:
第一步:
第二步:
問題:內存緩存區大小固定,外存數據元素分塊后仍然無法將倆塊放入比較
答:因為歸并段已經塊內有序,所以只需要將歸并段部分裝入內存,比較每個歸并段相同位置元素的先后次序寫入結果集即可
例:有倆個歸并段1358和2467,每個緩存區可以存放2個數據元素
1、先將倆個個歸并段的前倆個數據元素寫入內存
2、然后12比較輸出1,緩存區1標記后移;23比較輸出2,標記后移;
3、輸出緩存區滿,寫入外存
4、然后34比較輸出3,緩存區1比較完畢清空,將后倆個數據元素放入繼續比較
5、重復上述的過程直到比較結束
外部歸并排序的性能:
歸并段個數 * 每個歸并段內部排序時間 + 磁盤IO讀寫的次數 * 每個歸并塊讀寫的時間 + 歸并趟數 * 比較次數
3:排序成歸并塊的讀寫、倆次歸并排序的讀寫
(4+4) : 四次讀 + 四次寫
ps: IO讀寫的時間 >> 內部排序時間,所以優化外部歸并排序,就要減少IO讀寫次數
問題: 如何減少IO讀寫次數?
答: 二路歸并排序變四路歸并排序
總時間主要是受 外存讀寫時間的控制,而外存讀寫時間受歸并趟數的影響,所以,要想減少總時間,就要減少歸并趟數(多路歸并)
歸并排序法的優化:
1、讓K值增大
1、即增加歸并路數(會增加關鍵字對比次數,即增加內部排序時間)
2、用敗者樹減少關鍵字對比次數
2、讓r減小
1、增大每塊緩沖區容量
2、用“置換-選擇排序”減少初始歸并段數量
總結
以上是生活随笔為你收集整理的数据结构之外部排序:归并排序法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode篇之链表:1290(二进
- 下一篇: MessageDigest简单介绍