码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序和插入排序

时间:2017-01-20 22:19:34      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:wap   select   区别   span   amp   时间复杂度   class   swap   code   

选择排序思想是:假设一组混乱数组中一个数字是排好序的,然后对其他数字逐个排序,注意他与插入排序本质区别是,选择排序没有提前退出一说,也就是说必须要全部遍历完的,而插入排序可以提前退出循环

下面选择排序代码:

let select = (arr) => {
  for (var i = 0; i < arr.length;i++) {
    for (var j = i+1; j< arr.length;j++) {
      if (arr[j] < arr[i]) {
        swap(arr, j, i)
      }
    }
  }
}

 

时间复杂度是O(n2)的

插入排序可以这么理解,假设手上只有一张牌,然后待排序的是一堆牌,依次插入到到你手中

代码如下

let insert = (arr) => {
  for (let i = 1; i < arr.length; i++) {
    let b = arr[i], j = i
    while (j > 0 && b < arr[j - 1]) {
      arr[j] = arr[--j]
    }
    arr[j] = b
  }
  return arr
}

因为插入排序是可以提前退出循环的,所以插入排序优于选择排序,此外,当数组顺序性很高时候,时间复杂度插入排序要小  

选择排序和插入排序

标签:wap   select   区别   span   amp   时间复杂度   class   swap   code   

原文地址:http://www.cnblogs.com/lyz1991/p/6328385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!