假如数组元素为:data=[ 3 ,2 , 7 ,5 ]按照从小到大的排序:
第一轮: data[0]与data[1]比较 并互换位置 数组data=[2,3,7,5]
第二轮: data[2]=7与data[1]比较,由于7大于3不需要换位置,data[1]继续与data[0]比较 数组data=[2,3,7,5]
第三轮:data[3]与data[2]比较,互换位置, data[2]继续与data[1]比较 data[1]与data[0]比较 数组data=[2,3,5,7]
[ 3 ,2 , 7 ,5 ] 初始
[ 2,3 , 7 ,5 ]第一轮
[ 2,3 , 7 ,5 ] 第二轮
[ 2,3 , 5 ,5 ] 第三轮
插入排序思想:每次取一个元素与已经排好的数组元素进行比较,然后插入得到新的排序好的列表,最终将这个数组进行排序
时间复杂度:最好的为O(N-1)次 最差的:O(n^2)次
空间复杂度:O(1)
def InsertSort(a):
for i in xrange(1,len(a)):
for j in range(i,0,-1):
if a[j]<a[j-1]:
a[j],a[j-1]=a[j-1],a[j]
else:
break
return a