JavaScript 冒泡算法详解

冒泡算法简单来说就是让数组中需要比较大小的数据,像气泡一样,小的往上冒,大的往下沉,由此得出由小到大按顺序排列的数组。我总结了两种方法实现,一种是从头部开始比较,另一种是从尾部开始比较。

 

从头部开始比较:

var arr = [5,7,1,2,9,8];

for(var i = 0;i<arr.length-1;i++){
        for(var j = 0;j<arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){
               var t;
               t = arr[j];
               arr[j] = arr[j+1];
               arr[j+1] = t;
            }
        }
    }

其中第一个 for 循环控制比较轮次,因为 arr.length 从一开始数为 6,但是 for 循环里 i 从 0 开始,故需 arr.length - 1 ,但由于比较5轮次后得到5个已经排好序的数据,所以最后一个数不用比较,因此要小于 arr.length - 1 。 第二个for循环进行比较大小和交换位置,因为比较一轮会把处于底部的最小值排到最顶,所以接下来就不用再比较它了,只需比较剩余的数即可,所以需要小于 arr.length - 1 -i。

第一轮:5 7 1 2 9 8         5 1 7 2 9 8         5 1 2 7 9 8 

第二轮:5 1 2 7 8 9         1 5 2 7 8 9         

比较结束:1 2 5 7 8 9 

 

从尾部开始比较:

 var arr = [5,7,1,2,9,8];

for(var i = 0;i<arr.length-1;i++){
        for(var j = arr.length-i-1;j>=0;j--){
            if(arr[j]>arr[j+1]){
               var t;
               t = arr[j];
               arr[j] = arr[j+1];
               arr[j+1] = t;
            }
        }
    }

第一轮:5 7 1 2 9 8         5 7 1 2 8 9         5 1 7 2 8 9

第二轮:1 5 7 2 8 9         1 5 2 7 8 9         

比较结束:1 2 5 7 8 9 

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值