美文网首页
算法学习-排序-插入排序

算法学习-排序-插入排序

作者: MacXin | 来源:发表于2018-02-12 10:44 被阅读0次

原理

    直接插入排序的基本思想:每次将一个待排序的记录,按其keyword的大小插入到前面已经排好的子序列中的适当位置,直到所有记录插入完毕为止。

实现

    假设数组为A[0...n-1],

    1.初始时,A[0]自成1个有序区,无序区为A[1....n-1]。令i = 1;

    2.将A[i]并入当前的有序区A[0...i-1]中形成A[0...i]的有序区间;

    3.i++并反复第二步直到i == n-1,至此排序完毕。

效率分析

    稳定

    空间复杂度O(1)

    时间复杂度O(n2)

    最差情况:反序。须要移动n*(n-1)/2个元素

    最好情况:正序,不须要移动元素

    数组已是排序或者接近顺序。插入排序的效率最好的情况是O(n),最坏的情况执行时间和平均情况执行时间均为O(n2)

    通常插入排序呈现出二次排序算法中的最佳性能。

JavaScript

let arr1 = [2, 8, 3, 89, 67, 45]

function insertSort(arr){

  let newArr = []

  if(Array.isArray(arr) && arr.length>0){

    newArr = newArr.concat(arr)

    for(let i=0; i < arr.length; i++){

      let j = i

      let current = arr[i]

      while(j>0 && current < newArr[j-1]){

        newArr[j] = newArr[j-1]

        j--

      }

      newArr[j] = current

    }

  }

  return newArr

}

console.log('reArr===>', insertSort(arr1))

相关文章

  • 算法入门——插入排序、快速排序

    上篇文章学习了算法入门——冒泡排序、选择排序,这篇文章我们学习算法入门——插入排序。 插入排序 插入排序是在一组列...

  • 算法-插入排序

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

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

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

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 排序

    本文记录几个基础的排序算法。排序算法分为插入排序、交换排序、选择排序等几大类。 插入排序 1. 直接插入排序 O(...

  • 希尔排序

    算法学习记录-排序——希尔排序 - sjdang - 博客园iOS算法总结-希尔排序 - 简书 与插入排序不同,我...

  • 2020-04-30-排序算法

    冒泡排序 直接选择排序 插入排序 快速排序 参考 算法学习笔记17-经典排序算法八大排序算法稳定性分析

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • 数据结构与算法---排序篇

    前言: 2016年5月21号开始学习排序算法及其主要思想,并通过代码实现 插入排序 插入排序有两种: 直接插入排序...

网友评论

      本文标题:算法学习-排序-插入排序

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