数据结构:插入排序python

思路:跟选择排序一样,将数据分为两部分,将第一个元素为固定的,有序的,剩下的元素都是无序的,将无序的第一个元素和之前有序的部分进行比较,变成有序的,以此类推

    [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)

  结果:

 

posted @ 2020-05-15 22:18  Roronoa-Zoro  阅读(148)  评论(0编辑  收藏  举报