【发布时间】:2013-07-25 20:57:53
【问题描述】:
我需要一个支持插入键值对和提取具有最低键的对的数据结构。插入和提取可以随时发生,因此数据结构必须保持连续排序,提取包括从列表中删除对。此外,任何正在插入的新对的密钥值都不能低于最近提取的对的密钥。插入的键对的值也会随着时间的推移而增加。
要求:
- 密钥:64 位无符号整数
- 一次最多列出的条目数:~10^6
- 每秒插入(和提取)的条目:~10^5
- 提取时有效删除条目
- 正在插入的键对:当前最低键 > 键 > 当前最低键 + 10^7
- 内存需求无关紧要,计算复杂度无关
- 有些对可以有相同的密钥
【问题讨论】:
-
到目前为止我还没有尝试过任何解决方案,但我对此有一些想法:
-
@user1062874 嗯……你有什么想法?
-
将其实现为小数组的循环缓冲区,然后简单地遍历循环缓冲区并对数组进行排序以按顺序获取元素。 +非常快的插入-最后一个元素的检索可能很慢-键的最大值有限
-
使用自平衡二叉搜索树也可以解决问题,但插入时间为 O(log n)
-
购物问题不在主题范围内。 :) :)
标签: algorithm sorting data-structures