代码之家  ›  专栏  ›  技术社区  ›  Jay

在排序数组中插入一个数字!

  •  3
  • Jay  · 技术社区  · 14 年前

    我想写一段代码,将一个数字插入到一个排序数组的适当位置(即数组在插入后仍应保持排序)

    我的数据结构不允许重复。

    1. 使用二进制搜索找到应该放置此元素的正确索引
    2. 通过将该索引中的所有元素下移,为该元素创建空间。

    还有其他更好的办法吗?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Amadan    14 年前

    如果你真的有一个数组,而不是一个更好的数据结构,那是最佳的。如果你在实现上很灵活,看看 AA Trees

        2
  •  1
  •   tafa    14 年前

    数据是否必须一直完全排序? Binary Heap 此外,它还可以满足您的条件,即内存应该是连续的,因为您可以在数组的顶部实现二进制堆(即;数组[2n+1]左子级,数组[2n+2]右子级)。

        3
  •  1
  •   Jacob    14 年前

    如果在定位/删除和插入操作中插入大量元素logn,则基于堆的树实现将更有效。