美文网首页
排序:三. 插入排序(将元素比较插入到前面的位置)

排序:三. 插入排序(将元素比较插入到前面的位置)

作者: DJN_ | 来源:发表于2018-12-13 08:59 被阅读0次

参考文章

时间复杂度O(n2),最好情况O(n),最坏情况O(n2),稳定。(同冒泡)

  • 是一种简单直观的排序算法。适用于量级小于千,或者若已知输入元素大致上按照顺序排列
  • 插入排序不适合对于数据量比较大的排序应用。

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

算法描述如下:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素(第二个元素)作为目标元素,在已经排序的元素序列中从后向前扫描
  3. 如果当前元素(扫描到的元素)大于目标元素,将当前元素与目标元素交换
  4. 重复步骤3,直到找到目标元素的位置(当前元素小余或等于目标元素)
  5. 重复步骤2-4

使用数组结构的话,没比较一次且满足插入条件的话就需要交换一次,如果使用链表结构(只用记录后继,但同时需要维护下标;记录后继和前驱,无需维护下标)的话,只需记录位置,最后插入即可,无需插入多次。

先对数组前两个元素进行排序,之后将第三个元素与前两个比较,按排序规则插入正确的位置,之后将第四个元素与前三个,比较插入正确的位置,以此类推直至最后一个元素

如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找插入排序。

实现类为:InsertionSort

image.png

代码已上传 GitHub ,可以在 这里 找到

相关文章

  • 排序——插入排序法

    插入排序法 插入排序法是将数组中的元素注意与以为排序好的数据进行比较,先将前两个元素先派好,再将第三个元素插入到适...

  • 排序:三. 插入排序(将元素比较插入到前面的位置)

    参考文章 时间复杂度O(n2),最好情况O(n),最坏情况O(n2),稳定。(同冒泡) 是一种简单直观的排序算法。...

  • 算法笔记

    算法 插入排序 每次将一个待排序的元素与已排序的元素进行逐一比较,直到找到合适的位置按大小插入。 插入排序代码 注...

  • 基础排序算法

    插入排序从空集合开始,不断把记录插入到合适位置的排序方法 交换排序交换元素的位置进行排序 插入排序 直接插入排序 ...

  • 五、Java版直接插入排序

    一、核心思想 抽出一个元素,在其前面的元素中找到适当的位置进行插入。插入排序法:所谓插入排序法乃是将一个数目插入该...

  • 【初级排序算法】插入排序

    插入排序将一个元素插入到已经有序的数组中的适当位置,使新的数组还是有序。插入排序中,当前索引左边的所有元素都是有序...

  • 数据结构经典九大算法笔记

    00x01插入排序 每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置,图片演示...

  • 4.插入排序

    4.插入排序 4.1插入排序的思想和复杂度 插入排序思想 插入排序每次扫描的元素个数递增一个,且将最小的插入到最前...

  • 排序之一:插入排序

    介绍插入排序法是将数组中的元素,逐一与已排序的数据作比较,再将该数组元素插入适当的位置。 演示代码如下: 演示结果...

  • 折半插入排序(JAVA)

    算法   折半插入排序是直接插入排序与折半查找二者的结合,仍然是将待排序元素插入到前面的有序序列,插入方式也是由后...

网友评论

      本文标题:排序:三. 插入排序(将元素比较插入到前面的位置)

      本文链接:https://www.haomeiwen.com/subject/vixvhqtx.html