双端优先级队列

时间:2009-07-01 11:29:52

标签: c# data-structures

我有一组数据,我想找到最大和最小的项目(多次),最好的方法是什么?

对于对应用程序感兴趣的任何人,我正在开发一个详细级别的系统,我需要找到具有最大和最小屏幕空间错误的项目,显然每次我细分/合并我必须插入的项目队列,但每次相机移动整个数据集更改 - 所以最好只使用一个排序列表并推迟添加新项目,直到我下次排序(因为它经常发生)

1 个答案:

答案 0 :(得分:5)

您可以使用文章Min-Max Heaps and Generalized Priority Queues中描述的最小 - 最大堆:

  

一个简单的实现   双端优先级队列是   呈现。拟议的结构,   称为最小 - 最大堆,可以内置   线性时间;相比之下   传统的堆,它允许两者   FindMin和FindMax将在中执行   恒定时间; Insert,DeleteMin和   可以执行DeleteMax操作   在对数时间。