怎么通过手动移动数组元素在不使用 ArrayList 的前提下实现数组特定位置的插入与删除
手动移动数组元素这事儿,说白了,核心就是两招:“腾出空位”和“填补空缺”。本质上是靠循环搬移数据。由于数组长度是固定的,插入前得确保有足够的空间(实践中通常会用带冗余容量的数组),删除后逻辑长度减小,但物理空间不变。 插入操作:为什么要从后往前搬? 想在索引 index 处插入一个新元素 value
手动移动数组元素这事儿,说白了,核心就是两招:“腾出空位”和“填补空缺”。本质上是靠循环搬移数据。由于数组长度是固定的,插入前得确保有足够的空间(实践中通常会用带冗余容量的数组),删除后逻辑长度减小,但物理空间不变。

插入操作:为什么要从后往前搬?
想在索引 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[] arr 和 int 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--;
}
写代码的时候,这些细节直接关乎程序能不能跑对。记住方向规则和边界条件,手动操作数组其实没那么复杂。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。














