def insert_sort1(l):
for i in range(1,len(l)):
# print('i:',i)
for j in range(0,i):
if l[i]<l[j]:
# print(i,l[i])
l.insert(j,l[i])
l.pop(i+1)
def insert_sort2(arr):
"""插入排序"""
# 第一层for表示循环插入的遍数
for i in range(1, len(arr)):
# 设置当前需要插入的元素
current = arr[i]
# 与当前元素比较的比较元素
pre_index = i - 1
while pre_index >= 0 and arr[pre_index] > current:
# 当比较元素大于当前元素则把比较元素后移
arr[pre_index + 1] = arr[pre_index]
# 往前选择下一个比较元素
pre_index -= 1
# 当比较元素小于当前元素,则将当前元素插入在 其后面
arr[pre_index + 1] = current
上面两个插入排序算法,第一个用到了列表的insert和pop,第二个则没有,实验表明,在排15000个随机数的时候,第一个算法的排序速度较第二个快了17.7%左右,这应该与python列表的insert实现机制有关。