如何在定长数组指定位置插入元素并右移挤出末尾元素
数组指定位置插入元素实现方案
实现思路
- 首先确认插入位置:本次需求要在
5和7之间插入元素,对应下标为1的位置(数组默认从0开始计数) - 因为原数组长度固定,插入后要挤掉末尾元素,不需要做数组扩容操作,直接从数组最后一位开始倒序遍历到插入位置的下一位,将前一个位置的元素赋值给当前位置,即可实现插入位置之后的元素整体右移
- 最后把待插入的新元素赋值到目标插入位置即可得到最终结果
代码示例(Python)
# 初始化原数组 arr = [5, 7, 8, 9, 10] # 待插入元素 insert_val = 6 # 目标插入位置 insert_pos = 1 # 倒序遍历完成元素右移 for i in range(len(arr) - 1, insert_pos, -1): arr[i] = arr[i - 1] # 插入新元素 arr[insert_pos] = insert_val print(arr) # 输出结果:[5, 6, 7, 8, 9]
代码示例(JavaScript)
// 初始化原数组 let arr = [5, 7, 8, 9, 10] // 待插入元素 const insertVal = 6 // 目标插入位置 const insertPos = 1 // 倒序遍历完成元素右移 for (let i = arr.length - 1; i > insertPos; i--) { arr[i] = arr[i - 1] } // 插入新元素 arr[insertPos] = insertVal console.log(arr) // 输出结果:[5, 6, 7, 8, 9]
逻辑说明
选择倒序遍历是为了避免正序遍历时,前面的元素提前覆盖还未完成移动的后面元素的问题,从后往前赋值可以保证每个被移动的元素在被覆盖前,已经完成了向右侧位置的赋值操作。整个实现只用了最基础的数组下标访问和for循环逻辑,没有调用任何封装好的插入类API。
内容的提问来源于stack exchange,提问作者Braum Holdren
相关产品推荐
相关产品推荐

