def insert_sort(arr):
for i in range(1, len(arr)):
cur = arr[i]
t = i-1
while t>=0 and arr[t]> cur:
arr[t+1],arr[t] = arr[t],cur
t= t-1
if __name__ == '__main__':
arr = [1,4,3,8,2]
insert_sort(arr)
for data in arr:
print data
为了说明这个问题,我们加两个输出。
def insert_sort(arr):
for j in range(1,len(arr)):
cur = arr[j]
t = j-1
while t>=0 and arr[t]>cur:
arr[t+1] = arr[t]
arr[t] = cur
t -= 1
print(arr,"sub-----------")
print(arr)
myList = [49,38,65,97,76,13,27,49]
#InsertSort(myList)
insert_sort(myList)
print(myList)
得到如下输出:
这个图标红的地方说明了。我们每一次变化,我们的目的是保证每一次循环,前面的n个元素是排序的。下一次如果小于当前最大的值,在前面的n个元素给这个新值找个位置插入。