; ;

算法---之插入排序

插入排序

解释来自百度百科

“插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。”

可以参考菜鸟的图示:

https://www.runoob.com/data-structures/insertion-sort.html

我理解就是纸牌玩法,在玩纸牌的时候,我们会选取一个数字,然后依次对牌进行一个排序,所以插入排序,更像是对纸牌排序

代码

def inser_sort(li):
    #第一个循环遍历,是表示摸牌的下标数
    for i in range(1,len(li)):
        tmp=li[i]  #把牌存下来,
        j=i-1 #指的是手里牌的下标,每摸一次牌,就应该是长度减掉1就是下标
        #现在需要持续摸牌,什么时候结束,牌摸完了也就是j小于0,,
        while j>=0 and li[j]>tmp :#表示还在摸牌,li[j]大于tmp,说明是比现在手上的牌要大,进行移动
            #摸牌时大的往左移动,,小的数就往右移动
            li[j+1]=li[j]  #改变下标
            j-=1  #牌少了一张,所以要减坐标
        li[j+1]=tmp   #把牌的位置进行调换
        print(li)


lists=[9,7,4,1,3,2,6,5]
inser_sort(lists)

  

 

posted @ 2022-04-08 17:11  做梦的人-  阅读(29)  评论(0编辑  收藏  举报