zoukankan      html  css  js  c++  java
  • python之插入排序

    插入排序原理:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    插入排序核心:假设第一个元素排好,之后的元素对排好的部分从后向前比较并逐一移动。

    实现技巧:

    讲一组数据分成两组,我分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。

    为了排序方便,我们一般将数据第一个元素视为有序组,其他均为待插入组。

     下面以升序为例进行一次图解:

    Python代码:

    #coding=utf-8
    
    '''
    选择排序:
    思想:插入排序原理很简单,讲一组数据分成两组,我分别将其称为有序组与待插入组。
    每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,
    将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。
    直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。
    
    实现技巧:为了排序方便,我们一般将数据第一个元素视为有序组,其他均为待插入组。
    参考博客:http://blog.csdn.net/llzk_/article/details/51628574
    '''
    
    
    def insertionsort( list ):
        i=1        # 待插入元素下标
        j=0        # 排好序的最后一个元素
        temp=0     # 中间变量用来存储取出待排序元素的值
        for i in range(len(list)):
            j=i-1
            temp = list[i]
            while(j>=0 and temp<list[j]):
                list[j+1] = list[j]
                j = j-1
            else:
                list[j+1]=temp
        return list
    
    
    list = [2,1,4,2,4,2,4,2,1,4,3,5,1]
    
    print "排序前数组序列"
    print "----------------------------------------"
    print list
    
    insertionsort(list)
    print "排序后"
    print list

    执行结果:

  • 相关阅读:
    错位排序
    不容易系列之(4)——考新郎
    大数乘法
    神、上帝以及老天爷(错位排序)
    学生成绩……
    蛇形矩阵
    topcoder
    进制转换
    问题 1011
    topcoder 针对C程序员的TopCoder C++ (快速掌握)_ixigua—仅有杀毒软件是不够的…… .
  • 原文地址:https://www.cnblogs.com/rrttp/p/7905260.html
Copyright © 2011-2022 走看看