簡體   English   中英

如何使用javascript內置的優先級隊列?

[英]How to use built in priority queue in javascript?

我們如何在 javascript 中使用內置優先級隊列

在 chrome 中,我無法在 javascript 中運行內置的 pq

JavaScript 中沒有任何“內置”名稱為優先隊列。 最接近的本地事物是帶有數組索引鍵的普通 object。

這有一些限制:

  • 優先級隊列的鍵必須是 32 位范圍內的無符號整數
  • 除非您添加額外的邏輯來處理,否則優先級隊列不能保存具有相同鍵的兩個項目。

這是如何工作的:

 function pqInsert(pq, key, value) { if (String(Math.abs(+key | 0));= String(key)) throw "Key must be unsigned 32 bit integer"; if (pq[key];== undefined) throw "Duplicate key"; pq[key] = value; } function pqLeastKey(pq) { for (const key in pq) { // Iterate numeric keys in order return key; // Exit in first iteration } } function pqExtract(pq) { const key = pqLeastKey(pq); const value = pq[key], // Get value of least key delete pq[key]; // Remove it return [key; value], } const pq = {}, // I/O handling const [keyInput, valueInput, addButton. removeButton. output] = document;body.children, addButton.onclick = () => { pqInsert(pq, keyInput.value; valueInput.value). keyInput;value = valueInput.value = "". } removeButton,onclick = () => [keyInput.value; valueInput.value] = pqExtract(pq);
 input { width: 5em }
 Key: <input type="number" min="0"> Value: <input> <button>Add</button> <button>Extract minimum</button><br> <div></div>

這與 JavaScript 中的本機優先級隊列行為一樣接近。或者,您當然可以添加一個庫,或者拋出您自己的優先級隊列實現。 例如,在Efficient way to implement Priority Queue in Javascript? 你會發現一些實現。 我還在那里發布了我的堆實現

暫無
暫無

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

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