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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆

發布時間:2025/6/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現優先隊列結構主要是通過堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二項堆、斐波那契堆、pairing 堆等。

?

1. 二叉堆

?

1.1. 定義

完全二叉樹,根最小。

存儲時使用層序。

?

1.2. 操作

(1). insert(上濾)

插入末尾 26,不斷向上比較,大于26則交換位置,小于則停止。

?

(2). deleteMin(下濾)

提取末尾元素,放在堆頂,不斷下濾:

?

(3). 其他操作:

都是基于insert(上濾)與deleteMin(下濾)的操作。

減小元素:減小節點的值,上濾調整堆。

增大元素:增加節點的值,下濾調整堆。

刪除非頂點節點:直接刪除會出問題。方法:減小元素的值到無窮小,上濾后刪除。

Merge:insert>?

2. d叉堆

2.1. 定義

完全d叉樹,根最小。

存儲時使用層序。

?

2.2. 操作:

操作跟二叉堆基本一致:insert,deleteMin,增大元素,減小元素,刪除非頂元素,merge。

?

2.3 二叉堆與d叉堆的對比:

?

3. 左式堆

3.1. 定義

零路徑長度:到沒有兩個兒子的節點最短距離左式堆:1.一棵二叉樹2.零路徑長:左兒子≧右兒子,父節點= min{兒子} +1(這條性質導致了左式堆的嚴重左偏)?零路徑長度: ??

3.2. 操作:

(1) merge :

原則:根值大的堆與根值小的堆的右子堆合并(根值:根位置的元素值,并非零路徑長度)? ?具體分三種情況(設堆H1的根值小于H2)H1只有一個節點H1根無右孩子H1根有右孩子?(1.1).H1只有一個節點,若出現不滿足:零路徑長:左兒子≧右兒子,交換左右孩子。 ?(1.2).H1根無右孩子,若出現不滿足:零路徑長:左兒子≧右兒子,交換左右孩子。?

?

(1.3).H1根有右孩子

1.初始狀態,H1的根6,H2的根為8,將H2合并到H1。

2.將H1構造成根無右孩子的形式:

3.將元素10, merge到H2,要首先將H2構造成根無右孩子的形式,遞歸,merge,若出現不滿足:零路徑長:左兒子≧右兒子,交換左右孩子……

——》——》——》

4.

5.

3.3. 性質分析:

insert:mergedeleteMin:delete? root,merge時間復雜度:merge與右路徑長度之和成正比;最壞O(logN)缺點:交換需判斷;維護零路徑長

?

4. 斜堆

?

4.1. 定義

二叉樹,根最小。由此可見:? ??特點:merge無條件交換。?時間復雜度:最壞O(N);最好?(1);平均O(logN)

?

4.2性能比較:

?

?

5. 總結

?

如果是不支持所謂的合并操作union的話,普通的堆數據結構就是一種很理想的數據結構(堆排序)。 但是如果想要支持集合上的合并操作的話,最好是使用二項堆或者是斐波那契堆,普通的堆在union操作上最差的情況是O(n),但是二項堆和斐波那契堆是O(lgn)。

???????????????????????? Binary heap??????????????Binomial heap????????? Fibonacci heap

?????????????????????? 二叉堆(最壞情況) 二項堆(最壞情況)(斐波那契堆(平攤))

Procedure (worst-case) (worst-case) (amortized) -------------------------------------------------------------- MAKE-HEAP (1) (1) (1) INSERT (lg n) O(lg n) (1) MINIMUM (1) O(lg n) (l) EXTRACT-MIN (lg n) (1g n) O(lg n) UNION (n) O(lg n) (1) DECREASE-KEY (lg n) (lg n) (1) DELETE (1g n) (lg n) O(lg n)

總結

以上是生活随笔為你收集整理的结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆的全部內容,希望文章能夠幫你解決所遇到的問題。

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