1.问题
有一个有序数组,添加一个元素,使其仍然有序。
2.思路
遍历数组,将待添加元素和数组中元素比较,找到应该插入的位置。
3.插入排序实现方法
将数组中数据分为已排区间和未排区间,初始时,已排区间只有数组第一个元素,之后逐个取未排区间元素,在已排区间中找到合适位置并插入,直到未排区间为空。
4.示例
使用插入排序对[5,3,4,2,6,1]进行排序。
5.代码
def insert_sort(nums):
n = len(nums)
if n <= 1 :
return nums
# 遍历未排区间
for i in range(1,n):
# 设置预排值value
value = nums[i]
# i之前为已排区间
j = i - 1
# 预排和已排区间的数逐个对比,直到找到比自己小的数nums[j],那么nums[j+1]处就应该放value
while j >= 0 and value < nums[j]:
# 已排大于预排value,先进行移动操作
nums[j+1] = nums[j]
j -= 1
# value插入空隙
nums[j+1] = value
return nums