是吗
- 堆
- 未排序的列表
- 排序列表
- 链接列表
- 还有其他数据结构吗
在实现优先级队列时,其中哪一个是程序员的默认/自然选择,该特定选择相对于另一个的偏好原因是什么?
我建议实现Ladder Queue,它是一个O(1)
优先级队列。
形式化定义:梯形队列:用于大规模离散事件模拟的O(1)优先级队列结构
我会说堆是为了速度。
列表具有线性访问时间,而堆O(log(n))访问是可能的(插入/删除),而列表允许O(1)中的删除,但插入具有O(n)
偶尔我需要一个优先级队列,但只有一小部分优先级,所以我可以使用一组按优先级索引的"普通"FIFO队列。pop()方法从优先级最高的一端迭代数组,寻找非零计数。