商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 怎么通过手动移动数组元素在不使用 ArrayList 的前提下实现数组特定位置的插入与删除

怎么通过手动移动数组元素在不使用 ArrayList 的前提下实现数组特定位置的插入与删除

  发布于2026-07-09 阅读(0)

扫一扫,手机访问

手动移动数组元素这事儿,说白了,核心就是两招:“腾出空位”和“填补空缺”。本质上是靠循环搬移数据。由于数组长度是固定的,插入前得确保有足够的空间(实践中通常会用带冗余容量的数组),删除后逻辑长度减小,但物理空间不变。

怎么通过手动移动数组元素在不使用 ArrayList 的前提下实现数组特定位置的插入与删除

插入操作:为什么要从后往前搬?

想在索引 index 处插入一个新元素 value,当前数组有 size 个有效元素(下标 0 到 size-1 都已存数据)。操作的前提是 size < array.length,还有空位。核心步骤是:

  • 从最后一个有效位置(size - 1)开始,逐个把元素往后挪一位,直到把 index 位置空出来
  • 也就是循环执行 array[i + 1] = array[i],i 从 size - 1 递减到 index
  • 最后把 value 赋给 array[index],然后 size++

举个例子:数组 [1, 2, 4, 5](size=4),想在 index=2 插入 3。假设容量足够,先挪 5 到位置 3,再挪 4 到位置 2,得到 [1, 2, 4, 4, 5] 这个暂态。然后填 3 进去,变成 [1, 2, 3, 4, 5],size 更新为 5。这个从后往前的顺序很关键,如果反过来从前往后搬,数据就会被覆盖掉。

删除操作:这次得从前往后搬

要删除索引 index 处的元素,前提是 index 位置合法(0 ≤ index < size)。操作步骤是:

  • index + 1 开始,逐个把后续元素往前挪一位,一直挪到最后一个有效元素
  • 也就是循环执行 array[i - 1] = array[i],i 从 index + 1 递增到 size - 1
  • 最后 size--,逻辑长度减一,末尾那个元素虽然物理上还在,但已经不再被视为有效数据

例子:数组 [1, 2, 3, 4, 5](size=5),删除 index=2(也就是删掉 3)。挪动 4 到位置 2,再挪 5 到位置 3,得到 [1, 2, 4, 5, 5]。虽然末尾还有个 5 残留,但 size 变成 4 之后,有效部分就是 [1, 2, 4, 5] 了。

边界与安全,这几个点得盯牢

  • 插入前必须检查容量:如果 size == array.length,那就没法直接插入。要想插就得扩容——新建一个更大的数组然后复制过去,但那已经超出“手动移动”的范畴了
  • 索引合法性校验:插入时要求 0 ≤ index ≤ size(允许插在末尾);删除时要求 0 ≤ index < size
  • 搬移方向不能搞反:插入从后往前,否则会一遍遍覆盖掉还没挪的数据;删除从前往后,否则同样会出问题
  • 维护好 size 变量:这个变量代表当前有效的元素个数,所有逻辑——不管是遍历还是判断插入位置的上限——都依赖它,而不是依赖 array.length

来个 Ja va 风格的代码示意

假设 int[] arrint size 都是类的成员变量:

// 插入
void insert(int index, int value) {
    if (size >= arr.length || index < 0 || index > size) return;
    for (int i = size; i > index; i--) {
        arr[i] = arr[i-1];
    }
    arr[index] = value;
    size++;
}

// 删除
void remove(int index) {
    if (index < 0 || index >= size) return;
    for (int i = index + 1; i < size; i++) {
        arr[i-1] = arr[i];
    }
    size--;
}

写代码的时候,这些细节直接关乎程序能不能跑对。记住方向规则和边界条件,手动操作数组其实没那么复杂。

本文转载于:https://www.php.cn/faq/2405101.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注