插入排序

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。

  1. 默认序列中的第0个元素是有序的(因为只有一个元素a[0]嘛,自然是有序的);
  2. 从下标为1(下标0没啥好插的)的元素开始,取当前下标i位置处的元素a[i]保存到一个临时变量waitInsert里;
  3. waitInsert与对前半部分有序序列的循环遍历比较,直到遇到第一个比waitInsert大的元素(这里默认是从小到大排序),此时的下标为j,然后将其插入到j的位置即可;
  4. 因为前面的插入,导致后面元素向后推移一个位置,没关系,把原来下标i的元素弹出即可;
  5. 重复进行第2步到第4步,直到乱序序列中的元素被全部插入到有序序列中;
  6. 经过以上5个步骤之后,整体序列必然有序,排序完成。
# 直接插入排序
def insertSort(relist):
    len_ = len(relist)
    for i in range(1,len_):  
        for j in range(i):
            if relist[i] < relist[j]:
                relist.insert(j,relist[i])  # 首先碰到第一个比自己大的数字,赶紧刹车,停在那,所以选择insert
                relist.pop(i+1)  # 因为前面的insert操作,所以后面位数+1,这个位置的数已经insert到前面去了,所以pop弹出
                break
    return relist

print insertSort([1,5,2,6,9,3])
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简...
    IT可乐阅读 3,138评论 0 3
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,084评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,017评论 0 2
  • ~“妈妈去弄指甲啦!” ~“你别弄得夸张,考虑一下我的三观!” ~“我可以按我自己的方式美吗?” ~“可以。只是你...
    寒妈阅读 2,662评论 0 1
  • 2015年10月29日,闭幕的中共十八届五中全会首次提出“创新、协调、绿色、开放、共享”五大新理念,以保障实现全面...
    柚子你个木子阅读 3,921评论 0 2