双端优先级队列

Mar*_*tin 6 c# data-structures

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

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

Fir*_*aad 5

您可以使用Min-Max Heaps和Generalized Priority Queues中描述的Min-Max Heap :

提出了双端优先级队列的简单实现.所提出的结构称为最小 - 最大堆,可以在线性时间内构建; 与传统堆相比,它允许FindMin和FindMax在恒定时间内执行; Insert,DeleteMin和DeleteMax操作可以在对数时间内执行.