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

时间:2010-06-07 12:10:00

标签: c data-structures

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

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

我打算做这样的事情:

  1. 找到我应该使用二进制搜索放置此元素的正确索引
  2. 通过向下移动该索引中的所有元素,为此元素创建空间。
  3. 将此元素放在那里。
  4. 还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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