数组的插入和删除并不是一个简单的问题,会涉及到比较麻烦的边界问题需要考虑清楚。
如给定一个数组,以及size(已经存储元素的个数)和element(需要插入的元素),我们需要考虑清楚四个问题。1、size和len(arr)的关系,2、index初始值,3、循环遍历的数量。4、列表移动的最后一个元素,考虑清楚一下问题,可以得到下列代码。
# 数组的插入问题,size是数组已经存储的元素的数量,从1开始编号,element为待插入的元素。
def addByElementSequence(arr, size, element):
# 问题1
if size >= len(arr):
return -1
# 问题2,要考虑到头部、中间和末尾的情况,如果没找到直接插入到末尾
index = size
# 问题3,找到新元素的插入位置
for i in range(size):
if element < arr[i]:
index = i
break
# 问题4,元素后移的位置,左闭右开
for j in range(size,index,-1):
arr[j] = arr[j-1]
arr[index] = element
return arr
arr1 = [1,2,3,8,9,10,0,0,0,0]
arr2 = addByElementSequence(arr1,6,11)
print(arr2)