针对冒泡的理解和看法详解

 冒泡排序是算法中最普通的一种,冒泡的原理就是利用循环比较数组中前一项和后一项的大小,把大项排在最后面,从而实现从小到大的排列顺序
具体实现步骤就是,利用双层for循环,第一层循环控制-循环比较的总次数,就是数组的长度减1,第二层循环-控制前后项交换比较的次数,举例来说,数组长度为5,那么第一次循环,前后项交换比较是4次,第二次前后项交换比较是3次,依此类推,内层for循环的条件控制应该为数组length-i-1,这是根据规律判断的。
在不减i的情况下,直接进行双层for循环也能实现数组排序,但是总的来说,循环判断条件减i的性能更高,因为内层循环前后项数据每交换一次,已经把前一项最大的值放在最后一项了,交换次数是逐渐递减的,所以判断的次数也是需要递减变化的,在判断条件不减i不变化的情况下,循环结束的条件判断就是固定为length-1是4次, 这样会导致不必要的重复性比较。

    var arr = [1,8,6,5,3,2,9]
    arr.forEach((value,index)=>{
      if(arr[index]>arr[index+1]){
        arr[index][index+1] = arr[index+1][arr[index]]
      }
    })
    console.log(arr);

    var arr1 = [5, 4, 3, 2, 1]
    for (var i = 0; i < arr1.length - 1; i++) {
      for (var j = 0; j < arr1.length - 1; j++) {
        if (arr1[j] > arr1[j + 1]) {
          [arr1[j], arr1[j + 1]] = [arr1[j + 1], arr1[j]]
        }
      }
    }
    console.log(arr1);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值