将数字插入已排序的数组中!

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

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

我打算做这样的事情:

  1. 找到我应该使用二进制搜索放置此元素的正确索引
  2. 通过向下移动该索引中的所有元素,为此元素创建空间。
  3. 把这个元素放在那里。

还有其他更好的方法吗?

如果你真的有一个数组而不是更好的数据结构,那就是最佳选择。 如果您对实现有灵活性,请查看AA树 – 它们非常快速且易于实现。 显然,占用比数组更多的空间,如果元素的数量不足以注意到与指针魔法相比的blit的缓慢,那么它是不值得的。

数据是否必须始终完整排序? 如果不是,如果只需要快速访问最小或最高元素, Binary Heap会提供持续访问时间和logn添加和删除时间。 更多的内容可以满足您的条件,即内存应该是连续的,因为您可以在数组顶部实现BinaryHeap(即;数组[2n + 1]左子,数组[2n + 2]右子)。

如果要插入大量元素,则基于堆的树实现会更有效 – 记录n用于定位/删除和插入操作。