美文网首页
03插入排序

03插入排序

作者: BubbleM | 来源:发表于2019-06-02 19:14 被阅读0次

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序步骤:

  1. 将序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

以下面5个无序的数据为例:
65 27 59 64 58 (文中仅细化了第四次插入过程)

  • 第1次插入: 27 65 59 64 58
  • 第2次插入: 27 59 65 64 58
  • 第3次插入: 27 59 64 65 58
  • 第4次插入: 27 58 59 64 65
let arr = [65, 27, 59, 64, 58];

function insertSort(arr) {
  for (let i = 1; i < arr.length; i++) { // 从第2个元素开始插入
    console.log('排序前:'+arr);
    let temp = arr[i]; // 待插入元素
    j = i - 1;
    while (j >= 0 && temp < arr[j]) { // 从后向前,找到比其小的数的位置
        arr[j + 1] = arr[j]; // 向后移动
        console.log('排序中!!调整:'+arr);
        j--;
    }
    console.log('需在位置'+(j+1)+'插入元素.....'+temp)
    arr[j + 1] = temp;
    console.log('排序后:'+arr);
    console.log('-------------------');
  }
  console.log('最终结果:'+arr);
  return arr;
}

insertSort(arr);

最佳情况:输入数组按升序排列。T(n) = O(n) 最坏情况:输入数组按降序排列。T(n) = O(n2) 平均情况:T(n) = O(n2)
上述属于直接插入排序
还可以有折半插入排序和希尔排序

排序前:65,27,59,64,58
排序中!!调整:65,65,59,64,58
需在位置0插入元素.....27
排序后:27,65,59,64,58
-------------------
排序前:27,65,59,64,58
排序中!!调整:27,65,65,64,58
需在位置1插入元素.....59
排序后:27,59,65,64,58
-------------------
排序前:27,59,65,64,58
排序中!!调整:27,59,65,65,58
需在位置2插入元素.....64
排序后:27,59,64,65,58
-------------------
排序前:27,59,64,65,58
排序中!!调整:27,59,64,65,65
排序中!!调整:27,59,64,64,65
排序中!!调整:27,59,59,64,65
需在位置1插入元素.....58
排序后:27,58,59,64,65
-------------------
最终结果:27,58,59,64,65

相关文章

  • 排序

    title: 排序date: 2016-08-15 17:56:03tags: 算法 排序 插入排序 插入排序就是...

  • 03插入排序

    插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找...

  • 03插入排序

  • 03插入排序

    原理 口语描述:第二个和第一个比,从小到大排。第三个和第二个比,再和第一个比,从小到大排。第四个和第三个、第二个、...

  • 03_插入排序

    def insert_sort(data): ''' 插入排序 :paramdata: :return: ...

  • 算法-插入排序

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

  • 小马哥2019年9月最新-恋上数据结构与算法(第二季)

    【目录】 │01.冒泡、选择、堆排序.mp4 │02.插入排序.mp4 │03.归并排序.mp4 │04.快速、希...

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

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

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

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

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

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

网友评论

      本文标题:03插入排序

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