快速插入和快速搜索的最简单的DS排序序列?

时间:2019-05-14 04:03:41

标签: algorithm data-structures

我正在寻找一种易于实现(在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选择字母之类的事情。

我希望探索新颖,短而快速的解决方案。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果您知道整数值的上限,则只需占用一部分内存,然后使用该集中的数字位即可。

  • 如果X在D中:O(1)
  • 插入:O(1)
  • 删除:O(1)

如果整数在最小值到最大值之间稀疏,则迭代速度很慢。在这种情况下,内存消耗也可能是不可接受的。