歡迎探討,如有錯(cuò)誤敬請(qǐng)指正

如需轉(zhuǎn)載,請(qǐng)注明出處 http://www.cnblogs.com/nullzx/


1. 優(yōu)先隊(duì)列與索引優(yōu)先隊(duì)列

優(yōu)先隊(duì)列的原理大家應(yīng)該比較熟悉,本質(zhì)上就是利用完全二叉樹的結(jié)構(gòu)實(shí)現(xiàn)以log2n的時(shí)間復(fù)雜度刪除隊(duì)列中的最小對(duì)象(這里以小堆頂為例)。完全二叉樹又可以通過數(shù)組下標(biāo)實(shí)現(xiàn)索引,當(dāng)插入一個(gè)對(duì)象的時(shí)候,利用上浮操作更新最小對(duì)象。當(dāng)刪除堆頂最小對(duì)象時(shí),將末尾的對(duì)象放置到堆頂上,然后執(zhí)行下沉操作。

優(yōu)先隊(duì)列有一個(gè)缺點(diǎn),就是不能直接訪問已存在于優(yōu)先隊(duì)列中的對(duì)象,并更新它們。這個(gè)問題在Dijistra算法中就有明顯的體現(xiàn),有時(shí)候我們需要更新已在隊(duì)列中的頂點(diǎn)的距離。為此就需要設(shè)計(jì)一種新型的數(shù)據(jù)結(jié)構(gòu)來解決這個(gè)問題,這就是本文要介紹的索引優(yōu)先隊(duì)列。

索引優(yōu)先隊(duì)用一個(gè)整數(shù)和對(duì)象進(jìn)行關(guān)聯(lián),當(dāng)我們需要跟新該對(duì)象的值時(shí),可以通這個(gè)整數(shù)進(jìn)行快速索引,然后對(duì)對(duì)象的值進(jìn)行更新。當(dāng)然更新后的對(duì)象在優(yōu)先隊(duì)列中的位置可能發(fā)生變化,這樣以保證整個(gè)隊(duì)列還是一個(gè)優(yōu)先隊(duì)列。

簡(jiǎn)易版的索引優(yōu)先隊(duì)列API

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言:
 

  • IndexPriorityQueue<T>


    IndexPriorityQueue(int capacity, Comparator<T> cmp)

    構(gòu)造函數(shù),capacity表示隊(duì)列容量,cmp表示對(duì)象的比較器