日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之外部排序:归并排序法

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之外部排序:归并排序法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外部排序:歸并排序法

  • 思維導圖:
  • 外部歸并排序的原理:
  • 外部歸并排序的性能:
  • 歸并排序法的優化:

思維導圖:

外部歸并排序的原理:

第一步:
第二步:

問題:內存緩存區大小固定,外存數據元素分塊后仍然無法將倆塊放入比較
答:因為歸并段已經塊內有序,所以只需要將歸并段部分裝入內存,比較每個歸并段相同位置元素的先后次序寫入結果集即可
例:有倆個歸并段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、用“置換-選擇排序”減少初始歸并段數量

總結

以上是生活随笔為你收集整理的数据结构之外部排序:归并排序法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。