python 插入排序

来源:互联网 发布:一代军师知乎 编辑:程序博客网 时间:2024/06/13 18:07

看了那么多插入排序,解释一下这个方法。

分如下几个步骤:

1 认为前面的数列已经完成排序,即按照从小到大的顺序,最大的在最后面

2 将接下来要排列的数a[i]存入一个变量中,a[i] = data。即在 i 这个位置挖了一个坑。

3 从已经排序的数组a[j]的末尾开始,即从最大值a[j] 开始,data不太老实,想通过 j 遍历排列好的部分,找到比自己大的数,然后让他们依次填坑。如果data大,则循环结束,data乖乖回到原来的坑;如果data小,则a[j]往后移动一位填那个坑,然后再空出自己的位置成为新的坑:a[j+1] = a[j]。每轮比较  j-- ,直到 j < 0,或者data回到坑中。

4 循环结束后a[j] 的值是小于新来的值的,则a[j+1]的位置上的值就是新来的值data了:a[j+1] = data。


整个的代码如下:


def Insert_sort(a):    for i in range(1,len(a)):        data = a[i]  #先挖一个坑        j = i - 1             while j >= 0 and a[j] > data:   #data看是不是比自己大            a[j+1] = a[j]  #是的话,就让那个值往后填坑, a[j+1]永远是data挖的坑            j = j-1        #接着下一个            a[j+1] = data      #比较结束了,data回到自己刚挖的坑中        return a


0 0
原创粉丝点击