【发布时间】:2011-01-13 21:31:54
【问题描述】:
我有 N 个键。
我需要找到一个可以通过以下操作完成的数据结构:
在 O(N) 中构建它
在 O(1) 中找到最小值
删除 O(logn) 中的中位数
找到第 n/2+7 个最大的数
我考虑过使用最小堆(构建是 O(n),最小是 O(1) - root)。
但是,我很难找到实现 3 和 4 的方法。
我认为中位数应该在叶子上,但这是我所达到的。
【问题讨论】:
-
您可能正在寻找 B-Tree (en.wikipedia.org/wiki/B-tree)。
-
@Joe:构建 B-Tree 不是 O(N)。
标签: data-structures