年近三十,身在国企,重拾梦想。
一、算法思路
算法需要2重循环,首先第1重循环从左向右逐渐+1生成子数组,然后第2重循环进行子数组排序。时间复杂度自然是O(n^2)。
如图a [5,2] 排序,变成图b [2,5,4]排序,变成图c [2,4,5,6]排序
二、Python代码
arr=[5,2,4,6,1,3]
for j in range(1,len(arr)):
key=arr[j]
i=j-1
while i>=0:
if arr[i]>key:#此为升序排序,若要降序排序则改为<
arr[i+1]=arr[i]
i=i-1
else:
break
arr[i+1]=key
print(arr)
三、运行结果
E:\python\suanfadaolun>python 2.1-insertion-sort.py
[1, 2, 3, 4, 5, 6]