我有一组数据,我想找到最大和最小的项目(多次),最好的方法是什么?
对于对应用程序感兴趣的任何人,我正在开发一个详细级别的系统,我需要找到具有最大和最小屏幕空间错误的项目,显然每次我细分/合并我必须插入的项目队列,但每次相机移动整个数据集更改 - 所以最好只使用一个排序列表并推迟添加新项目,直到我下次排序(因为它经常发生)
答案 0 :(得分:5)
您可以使用文章Min-Max Heaps and Generalized Priority Queues中描述的最小 - 最大堆:
一个简单的实现 双端优先级队列是 呈现。拟议的结构, 称为最小 - 最大堆,可以内置 线性时间;相比之下 传统的堆,它允许两者 FindMin和FindMax将在中执行 恒定时间; Insert,DeleteMin和 可以执行DeleteMax操作 在对数时间。