排序算法一:插入排序

马谦马谦马谦 数据结构和算法评论399字数 348阅读1分9秒阅读模式

一、原理

从排序序列的第二个元素开始,依次往前面查询,知道找到一个合适的位置就把它插进去。每个元素在交换完成之后[0, n]都是一个有序序列,它的时间复杂度为O(n^2)

排序逻辑:

以下是对序列[3, 7, 4, 1, 9, 6]的插入排序过程,初始时的状态为:

排序算法一:插入排序-图片1

执行第一次插入(从第二个元素开始),把7放到合适的位置:

排序算法一:插入排序-图片2

执行第二次插入过程,把4放到合适位置:

排序算法一:插入排序-图片3

执行第三次插入过程,把1放到合适位置:

排序算法一:插入排序-图片4

执行第四次插入过程,把9放到合适位置:

排序算法一:插入排序-图片5

执行最后一次插入过程,把6放到合适位置:

排序算法一:插入排序-图片6

二、代码实现

1. C++实现

2. python实现

 最后更新:2020-2-7
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2018年3月3日20:56:24
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/algorithms/insert-sort.html
排序算法四:梳排序 数据结构和算法

排序算法四:梳排序

一、梳排序简介 梳排序是冒泡排序的一种优化方案,主要是为了解决冒泡排序中的尾部小数值问题。它主要的思想是通过比较元素和固定步长位置上的数据,先进行部分优化,然后逐步减少步长,以此来对数据进行预处理。 ...
排序算法五:堆排序 数据结构和算法

排序算法五:堆排序

一、堆排序原理 通过最大堆的性质可以知道:一个堆中最大的元素总是在堆顶的,即数组下标0的位置。基于这一点,我们可以每次都把堆中的最大值提取出来,放到当前数组的后面。然后重新构建最大堆,重复这个过程,以...
排序算法七:计数排序 数据结构和算法

排序算法七:计数排序

一、计数排序 其基本思想为:假设n个输入的元素中的每一个都是在0到k之间的一个整数,对于每一个输入元素x,确定小于x的元素个数,直接把x放在它输出的数组中的位置上。例如有17个元素小于x,则x就应该在...
排序算法三:冒泡排序 数据结构和算法

排序算法三:冒泡排序

一、原理 冒泡排序的原理很简单, 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。 冒泡排序是一种稳定的排序算法。 冒泡排序不管在什...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证