91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java優先隊列是怎樣的

發布時間:2021-12-27 15:14:26 來源:億速云 閱讀:319 作者:柒染 欄目:開發技術

Java優先隊列是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1.優先隊列概念

優先隊列(priority queue)是一種特殊的數據結構。
隊列中每一個元素都被分配到一個優先權值,出隊順序按照優先權值來劃分
一般有兩種出隊順序:高優先權出隊低優先權出隊
priority queue至少要有兩個最基本的ADT:進隊出隊(按照高優先權或低優先權)

產生原因:同樣是為了提高數據處理的效率。試想,要實現優先隊列對應的功能,若使用鏈表或者數組,那么要么先排序再插入,要么先插入再查找最大最小元素。這樣一來,入隊出隊的時間復雜度至少為O(N)。

  • 優先隊列出隊和入隊的時間復雜度均為O(log N)。

  • 優先隊列基于二叉堆實現。

2.二叉堆(Heap)

堆是一種特殊的二叉樹,性質如下:

  • 每個結點的值都大于或等于其左右孩子結點的值(大頂堆),或每個結點的值都小宇或等于其左右孩子的值(小頂堆)。

  • 必須滿足完全二叉樹的結構。

完全二叉樹和滿二叉樹

完全二叉樹 complete binary tree

葉節點只可能出現在最后兩層,且最后一層的葉節點都左對齊
一棵深度為h的完全二叉樹

Java優先隊列是怎樣的

滿二叉樹 full binary tree

深度為h的滿二叉樹有(2^h)-1個結點

Java優先隊列是怎樣的

由二叉堆的定義可以看出,跟結點一定是二叉堆中結點值最大(或最小)的。較大(或較小)的結點靠近根節點

堆的存儲結構:

一般情況下,堆用數組來存儲,第i個結點的父節點的下標就是(i-1)/2.
如果用層序遍歷順序將大頂堆和小頂堆存入數組,

則關系如圖:

Java優先隊列是怎樣的

堆的重要操作

插入:插入一個元素之后,新元素首先被插入表層(即最后一層盡可能左邊的位置),之后再根據堆的性質進行調整。

例:寫出一次一個地將10,12,1,14,6,5,8,15,3,9,7,4,11,13和2插入一個初始為空的二叉堆的結果

Java優先隊列是怎樣的Java優先隊列是怎樣的

刪除:刪除總是發生在根處,之后將最后一個元素(即最后一層最右邊的元素)拿來填補空缺,之后根據堆的性質進行調整堆的結構。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

分宜县| 玛纳斯县| 岳西县| 克拉玛依市| 界首市| 荣成市| 伊川县| 呈贡县| 博兴县| 静乐县| 浦江县| 甘南县| 凯里市| 绥中县| 徐闻县| 鹿泉市| 山丹县| 进贤县| 太白县| 全椒县| 丹寨县| 东乌珠穆沁旗| 石城县| 六枝特区| 名山县| 遂宁市| 景谷| 临西县| 股票| 克拉玛依市| 商城县| 修武县| 桂平市| 隆德县| 栾城县| 沐川县| 闸北区| 弥勒县| 陆川县| 浑源县| 福建省|