冒泡排序,选择排序,插入排序

冒泡排序

思路:比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至 正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。 

冒泡排序

代码实现:

function bubbleSort2(arr){
  let len = arr.length;
  for(var i=0;i<len;i++){
    // 已排序好的不用再遍历,故取j<len-1-i
    for(var j=0;j<len-1-i;j++){
      if(arr[j]>arr[j+1]){
        // 如果第j个数据大于第j+1个数据,则对调位置
        [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
      }
    }
  }
  return arr;
}

选择排序

思路:找到数据结构中的小值并 将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。

选择排序

代码实现:

function selctionSort(arr) {
  var len = arr.length;
  var minIndex, temp;
  for (var i = 0; i < len - 1; i++) {
    // 起始位置,被比较的值
    minIndex = i;

    // 找到未排序中最小的值,并记录索引
    for (var j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j
      }
    }

    // 将未排序中最小值,与起始值对调
    if(minIndex != i){
      [arr[i],arr[minIndex]] = [arr[minIndex],arr[i]]
    }
  }
  return arr;
}

插入排序

思路:假定第一项已经排序了,接着, 它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢?这样,头两项就已正确排 序,接着和第三项比较(它是该插入到第一、第二还是第三的位置呢?),以此类推。 

插入排序

代码实现:

function insertionSort(arr) {
  var len = arr.length,
    j, temp;
  // 默认第一项已排序,从第二项开始
  for (var i = 1; i < len; i++) {
    j = i;
    // 要插入的值
    temp = arr[i]; 
    // 将这个值与前面每一个值比较,确定插入的位置
    while (j > 0 && temp < arr[j - 1]) {
      arr[j] = arr[j - 1];
      j--;
    }
    // 插入
    arr[j] = temp;
  }
  return arr
}

总结:

1. 时间复杂度比较

2. 排序小型数组时,插入排序比选择排序和冒泡排序性能要好

 

 

 

 

备注:

1. 参考书籍:《学习JavaScript数据结构与算法》第2版;

2. 动图来自于网络,如有侵权,请联系删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值