码迷,mamicode.com
首页 > 编程语言 > 详细

python 插入排序

时间:2015-01-08 07:14:45      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:算法

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

分如下几个步骤:

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


python 插入排序

标签:算法

原文地址:http://rhythmer.blog.51cto.com/4110192/1600411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!