美文网首页
排序1-插入排序

排序1-插入排序

作者: 大胡子商人 | 来源:发表于2018-01-04 13:44 被阅读27次

1、基本思想:
将需要排序的有限序列看做两个小区间,第一个区间为已经排好序的有序序列,第二个区间为无序序列,每次从无序区间拿出一个数据放入有序区间的合适位置,直到第二个区间无数据,则排序完成。

图解(假设为升序):

image

2、算法执行步骤:

1)从第一个元素开始,该元素可以认为已经被排序

2)取出下一个元素,在已经排序的元素序列中从后向前扫描

3)如果该元素(已排序)大于新元素,将该元素移到下一位置

4)重复步骤3),直到找到已排序的元素小于或者等于新元素的位置

5)将新元素插入到该位置中

6)重复步骤2)

3、时间复杂度&&空间复杂度

如果目标是把n个元素的序列按升序排列,那么采用插入排序存在最好情况和最坏情况。

最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。

最坏情况就是,序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。

插入排序的赋值操作是比较操作的次数减去(n-1)次。平均来说插入排序算法复杂度为O(n²)。因而,插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千,那么插入排序还是一个不错的选择。

由于算法需要存储的是有限个数据的存储空间,故此插入排序的空间复杂度为O(1)。

http://blog.csdn.net/snow_5288/article/details/59063264

相关文章

  • 希尔排序、堆排序、归并排序

    -希尔排序 克服插入排序每次只能交换一对元素的缺点5-间隔的排序,3-间隔的排序,1-间隔排序(最后必须是1-间隔...

  • 排序1-插入排序

    1、基本思想:将需要排序的有限序列看做两个小区间,第一个区间为已经排好序的有序序列,第二个区间为无序序列,每次从无...

  • 173. 链表插入排序

    用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->nu...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • 算法(排序)

    一、内部排序 1、插入排序—直接插入排序(Straight Insertion Sort) 2、插入排序—希尔排序...

  • Java排序算法

    插入排序 直接插入排序 折半插入排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 其他排序 二路...

  • 一遍文章搞定插入排序-java版

    插入排序 1.1 插入排序的基本介绍 插入排序属于内排,就是以插入的方式来达到排序的目的 1.2 插入排序思想 将...

  • 排序(新排版)

    冒泡排序 插入排序 二分插入排序 希尔排序 选择排序 快速排序

网友评论

      本文标题:排序1-插入排序

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