经典排序算法-插入排序Insertion sort

一、插入排序思想

从第二个元素开始依次与前边的元素做比较如果小于前边的元素就交换位置直到不小于为止。

步骤如下:

0、如[3,2,1]
1、从第二位开始2与3比较,2<3 交换位置,结果[2,3,1]
2、第三位1与它前一位3比较,1<3交换位置,结果[2,1,3]
3、1再与前一位2比较,1<2交换位置,结果[1,2,3]。此时完成排序

代码如下(insertion sort 00)

insertion sort 00

上述代码内循环采用的是元素交换的方式,看起来和"插入"并不十分契合,以下方式将内循环中的交换元素改成向后挪动较大元素的方式,可以减少访问数组的次数。代码如下(insertion sort 01)

insertion sort 01

二、特点

  • 插入排序所需的时间取决于元素的初始状态
  • 平均啥情况下需要N²/4次比较和N²/4次交换;最差需要N²/2次比较和N²/2次交换;最好的情况N-1次比较0次交换
  • 插入排序对以下情况的初始状态元素排序很有效
    1、每个元素距离它最终位置都不远
    2、一个有序的大数组接一个小数组
    3、所有元素中只有几个元素位置不正确
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ba la la la ~ 读者朋友们,你们好啊,又到了冷锋时间,话不多说,发车! 1.冒泡排序(Bub...
    王饱饱阅读 5,766评论 0 7
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,587评论 0 52
  • 写日志一篇,胡侃逍遥与自由。
    葉傾阅读 1,443评论 0 0