程序员对优先级队列实现的默认选择是什么?



是吗

  • 未排序的列表
  • 排序列表
  • 链接列表
  • 还有其他数据结构吗

在实现优先级队列时,其中哪一个是程序员的默认/自然选择,该特定选择相对于另一个的偏好原因是什么?

我建议实现Ladder Queue,它是一个O(1)优先级队列。

形式化定义:梯形队列:用于大规模离散事件模拟的O(1)优先级队列结构

我会说堆是为了速度。

列表具有线性访问时间,而堆O(log(n))访问是可能的(插入/删除),而列表允许O(1)中的删除,但插入具有O(n)

偶尔我需要一个优先级队列,但只有一小部分优先级,所以我可以使用一组按优先级索引的"普通"FIFO队列。pop()方法从优先级最高的一端迭代数组,寻找非零计数。

最新更新