[英]How to use built in priority queue in javascript?
我們如何在 javascript 中使用內置優先級隊列
在 chrome 中,我無法在 javascript 中運行內置的 pq
JavaScript 中沒有任何“內置”名稱為優先隊列。 最接近的本地事物是帶有數組索引鍵的普通 object。
這有一些限制:
這是如何工作的:
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.