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

原理

    直接插入排序的基本思想:每次将一个待排序的记录,按其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))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,375评论 0 1
  • 我今晚看了一晚我们以前的照片又看了很久你最近的生活 你没了我好像也还是过的很开心 但我不一样 离开你的每一分每一秒...
    1beb76f521c9阅读 191评论 0 1
  • 文 搬砖哥 《拉稀》 清晨,肚子疼 难道是昨晚死去的啤酒 来向我复仇? 难道是被开水烫过的泡面 来向我索命? 干活...
    一枚搬砖哥阅读 548评论 14 14
  • 2017的最后两周在我与娃交错生病的状态中度过,所以基本没时间画画。51周冬至夜尝试画了张雾凇,白夜的群青很容易翻...
    兔娅娅阅读 263评论 2 8