程序员执行优先级队列的默认选择是什么?

时间:2012-01-20 09:16:00

标签: c++ data-structures heap priority-queue

是吗:

  • 堆?
  • 未分类列表?
  • 排序清单?
  • 链接列表?
  • 任何其他数据结构?

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

3 个答案:

答案 0 :(得分:2)

我建议实现一个梯形图队列,这是一个O(1)优先级队列。

正式定义:Ladder queue: An O(1) priority queue structure for large-scale discrete event simulation

答案 1 :(得分:0)

我会说堆速度。

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

答案 2 :(得分:0)

在奇怪的情况下,我需要一个优先级队列,只有一小部分优先级,所以我已经能够逃脱一系列'普通'FIFO队列,按优先级索引。 pop()方法从最高优先级的末尾迭代数组,寻找非零计数。