冒泡排序

冒泡排序

冒泡排序是将每个数和前一个数进行比较,大的往后排,小的往前排 例如现在有一个数组 [2,5,1,3,6];
[2,5,1,3,6]
第一轮比较时 将2和5比,5本来就比2大,因此不要换,然后又将5和1比,
此时5大于1,因此位置互换,在将5和3,5大于3位置互换,最后5和6比,5不大于6,位置不变
得出结果如下 [2,1,3,5,6]  第一轮比完后已经将最大的比出来了

第二轮 2和1比 2大于1位置互换 ,然后2和3比,2不大于3位置不变,然后3和5比,3不大于5位置不变
得出结果如下 [1,2,3,5,6]

只要比较两次即可全部比完,

下面代码中的temp的作用便在此,首先将temp至为0 若进行了比较在赋值为1 若没进行比较则默认为0 若为0说明没有比较了,表示
此时已经比较完了,因此可以跳出循环,优化比较速度

代码


 function Bubblesort(arr) {
      let length = arr.length
      for (let j = length - 1; j >= 0; j--) {
        var temp = 0;
        for (let i = 0; i < j; i++) {
         //交换标志位初始值是0
          //比较 i  和 i+1 位置的两个数据, 如果 i 位置 大于 i+1 的数据就进行数据交换
          if (arr[i] > arr[i + 1]) {  
            // 交换
            var temp = arr[i]
            arr[i] = arr[i + 1]
            arr[i + 1] = temp;
            temp = 1;
          }
        }
        if(temp == 0)
		return ;
        console.log(arr)
      }
    }

    var arr = [2,5,1,3,6]
    Bubblesort(arr)

输出

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值