以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
24. 用JavaScript手写一个Priority Queue
实现如下:
class PriorityQueue { constructor(compare) { // 数组存储元素 this.elements = []; // compare函数返回-1, 0, 1决定优先级 this.compare = compare; } add(element) { this.elements.push(element); // 内部使用sort对数组进行排序 this.elements.sort(this.compare); } poll() { return this.elements.shift(); } peek() { return this.elements[0]; } size() { return this.elements.length; }}
需要注意的是,我们使用数组内置的sort方法对元素进行排序,这可能在性能上有些损耗。如果有时间,我们可以手写一个堆(Heap)来优化它。
此外,PriorityQueue的底层实现还可以是链表、平衡树等实现。在实际工作中,我们也可以根据问题和数据规模来选择不同的实现。