我有一系列的事项(大分数),将要进行处理。在每种情况下,处理将包括移除集合中最小的项目,进行一些工作,然后添加0-2个新项目(这些新项目始终大于已移除的项目)。集合将被初始化为一个项目,并且处理将继续进行直到它为空。我不确定集合可能会达到多大,但我预计在1M-100M个项目的范围内。我只需要定位最小的项目。
目前,我打算使用红黑树,可能对其进行调整以保留对最小项目的指针。但是,我以前从未使用过红黑树,也不确定我的使用模式是否与其特性相适应。
1)从左边删除+随机插入的模式会影响性能吗?例如,是否需要旋转的数量比随机删除要高得多?或者,在这种使用模式下,删除和插入操作仍然是O(log n)的吗?
2)是否有其他数据结构可以给我提供更好的性能,无论是由于删除模式还是利用我只需要找到最小项的事实?
更新:很高兴我问了,二叉堆显然是这种情况下更好的解决方案,而且如承诺般非常容易实现。
Hugo