插入排序
每一次将数据插入到合适的位置。如:2,4,6,1,7
第一个不动,第二为与第一为比较,如果小于2交互,找到了自己的位置。第三个数再和第二个数比较,小于第二位就交换,第二位再和第一位比较。这样循环。
# -*- coding: UTF-8 -*-
a=[2,8,4,5,9,4,42,0,3,6,8]
def InsertionSort(arr):
for i in range(len(arr)):
# print(i)
for j in reversed(range(1,i+1)):
# print(j)
while a[j]<a[j-1]:
a[j] , a[j - 1] = a[j-1], a[j]
return arr
print(InsertionSort(a))
优化:每一次和前边交换,要浪费很多时间,所以将当前值记录下来,用前边的数值向后覆盖。
def InsertionSort(arr):
for i in range(len(arr)-1):
j=i+1
m=arr[j]
while m < a[j-1] and j>0:
a[j] = a[j-1]
j-=1
arr[j]=m
return arr
print(InsertionSort(a))