我正在寻找一种易于实现(在C ++中)的数据结构 D ,该结构通过快速插入和快速搜索(即可以检查)来维护整数(或任何可比较对象)的排序序列如果 X 位于 D 中,或获取第ith个元素)。快速应该是O(log(n)),O(1)或O(sqrt(N))之类的东西吗?
template<type T>
Class D {
D(...) { ... }
void insert(T x);
int get_ith(int x);
boolean check_x(T x);
}
目前,我了解AVL树,红黑树,跳过列表,尝试,哈希。所有这些都需要很难编码的非常复杂的解决方案。尝试可能是最简单的。但是,很难执行删除元素和为Trie选择字母之类的事情。
我希望探索新颖,短而快速的解决方案。
提前谢谢!
答案 0 :(得分:0)
如果您知道整数值的上限,则只需占用一部分内存,然后使用该集中的数字位即可。
如果整数在最小值到最大值之间稀疏,则迭代速度很慢。在这种情况下,内存消耗也可能是不可接受的。