psi*_*lia 15 c algorithm priority-queue binary-heap
我创建了一个二进制堆,它代表一个优先级队列.它只是经典的众所周知的算法.此堆计划不同事件的时间顺序(排序键是时间).
它支持2种操作:插入和删除.堆的每个节点的密钥大于或等于其每个子节点.但是,使用相同的键添加事件不会保留它们的添加顺序,因为每次调用Remove或Insert后,堆启动和堆降过程都会破坏顺序.
我的问题是:在经典算法中应该改变什么以保持具有相同优先级的节点的顺序?
Jur*_*aho 16
一种解决方案是向插入元素添加插入属性的时间.每次将新元素插入堆中时,这可能只是一个简单的计数器递增.然后,当两个元素优先级相等时,比较插入时间.
| 归档时间: |
|
| 查看次数: |
5678 次 |
| 最近记录: |