優先隊列和堆


怎么理解優先隊列和堆的關系?

簡單來說:堆排序是一種排序算法,利用堆結構完成排序的功能;優先隊列是一種數據結構,它是利用堆來實現。
具體來說,堆排序過程:建堆→堆頂就是最大(或小)值,然后堆頂跟最后一個元素交換→調整堆,反復這個過程,直到堆里面所有元素都交換好;
而優先隊列:建堆→堆頂元素就是優先級最高(或最低)的元素了,可以利用優先級這個數據結構來描述某個問題,比如有一批不斷輸入的日期,我想要在任何時刻都能以O(1)的速度得到已經輸入的日期中的最早日期,那么就可以用優先隊列這個數據結構存儲日期元素啦。

怎么理解二叉堆和性質?

二叉堆可以認為是一個完全二叉樹,把元素列成一個樹的形狀,元素一層一層的往下放,直到放不下為止。

二叉堆性質:

簡單來說:堆的每個子節點都要小於自己父節點的值,反之亦可,主要是根據自己對於優先級的定義。

注意:並不是每個父節點都要大於每個子節點,如圖第三層右節點16就比第四層左節點19要小,但依然成立二叉堆的性質。可以得出結論:子節點只需小於自身父節點即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM