簡體   English   中英

在自適應優先級隊列中使用位置

[英]Use of Position in Adaptable Priority Queue

當我們不得不將Entry引用傳遞給函數remove(k),replaceKey(k)時,Adaptable優先級隊列(鍵的基於列表的堆)中Position的用途是什么。 即,如果我對隊列中的條目有一些引用“ ref”,那么我可以簡單地調用remove(ref)和replaceKey(ref),這仍然需要O(1)的時間。 為什么我需要特殊職位?

  1. 將堆實現為鏈表根本沒有任何意義。 堆本質上是完整的二叉樹。 您可以將堆存儲在數組中,因為它很容易計算節點子級的數組索引:位置i處的節點的子級位於2i +1和2i + 2位置。 查找數組的ith元素比鏈表的ith元素效率高得多。

  2. 對於自適應優先級隊列,array(heaps)是對位置實例的引用序列,每個位置實例存儲鍵,值和數組中該項的當前索引。 用戶將獲得每個插入元素的Position實例的引用。當我們在堆上執行優先級隊列操作,並且在結構中重新放置項目時,我們在數組中重新放置position實例,並更新每個元素的第三個字段位置以反映其在數組中的新索引,並且更新將花費O(log(n))時間復雜度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM