data-structures - 快速插入/删除的数组

标签 data-structures linked-list

我正在寻找一种存储元素数组并支持这些操作的数据结构:

  • 访问给定索引处的元素
  • 在给定索引处添加或删除元素(并因此移动以下元素)

  • 数组在 O(1) 中执行第一个操作,但第二个操作需要 O(n),而链表则相反。有中间层数据结构吗?说,可以在 O(lg n) 或 O(n^epsilon) “最坏情况”时间进行两种操作的东西?

    请注意,我不是要求平衡二叉搜索树。每次添加/删除新元素时,这里的键(索引)都会更改和移动。例如,删除最小元素会将所有其他元素的索引减少 1。

    最佳答案

    有“AVL-Array”,一种 STL 风格的容器
    中执行这两个操作O(log n) .

    它建立在 AVL-Tree 之上,但它仍然不是
    一个关联容器,但顺序。
    支持索引访问[]vector语义。

    请注意,AVL-Array 没有实现 搜索 树,
    而是一个顺序容器
    碰巧以树的形式出现。索引、迭代、插入
    和删除都做你想做的
    期待 vector去做。

    你可以找到它here

    关于data-structures - 快速插入/删除的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469129/

    相关文章:

    java - 试图计算出链表空指针错误的大小

    python - List vs Dictionary vs Set用于查找数字出现的次数

    algorithm - 这个数据结构的名称是什么?

    c - 多头链表

    c - 从链表中删除选择的节点

    c - 如何在 C 中访问链表中的下一个元素?

    python - 关联矩阵?

    data-structures - Rope 数据结构解释?

    c++ - 对多个字段的元素进行排序

    java - addLast - 双循环链表 - NullPointerException