思路:跟选择排序一样,将数据分为两部分,将第一个元素为固定的,有序的,剩下的元素都是无序的,将无序的第一个元素和之前有序的部分进行比较,变成有序的,以此类推
[25,66,85,2,60]
[25,66, 85,2,60]
[25,66,85 2,60]
[2,25,66,85 60]
[2,25,60,66,85]
根据政治思路,我们先将第一次交换写出来,如下:
#coding: utf-8 def insert_sort(alist): i=1 if alist[i]<alist[i-1]: alist[i],alist[i-1]=alist[i-1],alist[i] a=[55,2,88,6,66,901,562] print(a) insert_sort(a) print(a)
这时候我们从整体考虑,上面写的过程要进行多少次,除了第一个元素不动以后,其它上面元素都应该取得,我们写一个外循环 for i in range(1,n)
让i=j,内循环里面让i=i-1,这样就可以不断跟之前的元素进行比较,当然如果大于了,直接跳出内循环,进行下一个循环
代码实现如下:
#coding: utf-8 def insert_sort(alist): n=len(alist) for j in range(1,n): i=j while i>0: if alist[i]<alist[i-1]: alist[i],alist[i-1]=alist[i-1],alist[i] i=i-1 else: break a=[55,2,88,6,66,901,562] print(a) insert_sort(a) print(a)
结果:
原文:https://www.cnblogs.com/cong3Z/p/12897572.html