繁体   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