优先队列为每个条目设置了优先级值和数据。
因此,当向队列添加新元素时,如果其优先级值比集合中已有的元素高,则会冒泡到表面。
调用pop时,我们将获取具有最高优先级的元素的数据。
在Javascript中,实现这样一个优先队列的有效方法是什么?
是否有必要创建一个名为PriorityQueue的新对象,并创建两个方法(push和pop),它们接受两个参数(数据、优先级)?对我来说作为一个编码人员,这已经很清楚了,但我不确定在底层使用哪种数据结构可以允许元素排序操作。或者我们可以把它全部存储在数组中,并且每次遍历数组来获取具有最大优先级的元素。那么,怎么做才是好的?
2n
的空间,因为多维数组中的每一行只有两个元素(固定长度)。 - gyreif (bottom > top) this._swap(top, bottom);
这样的语句拆成两行(还有 1TBS,我强烈建议在教程代码中使用,但那是另一个话题),2. 使用临时变量来存储需要重复计算的值(特别是如果它们是循环中使用的函数调用的结果),例如你的left(node)
、right(node)
、this.size()
等等... 在 JS/ES 代码中,这仍然会 真正 影响速度。 - user719662n >>> 1
相当于除以2并向下取整,而n << 1
相当于乘以2,并且只有在需要保持奇偶性时才会选择它,而不是2*n
。 - gyresort()
函数所期望的签名:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort - wvdz