冒泡排序的方法

首先要明白,冒泡排序(选择排序法)是将数组的中数据按照指定的顺序进行排列,既然要排列,那么我们就要应该比较两个数的大小,然后令其交换位置便实现了位置的交换。这时就出现一个问题,如何实现一个数与每个数进行一次比较,我们可以用一个双层for循环,外层循环一次,内侧循环一圈。这时便实现了一个数与其余的数进行比较,然后我们就可以比较大小,令其交换。

 <script>
        /* 
        选择排序法:用数组中的每一个元素和他后面的元素做比较,如果符合调换条件,则交换两个值的位置
        */
       var arr=[12,54,65,4,45,45,564,58,854,5,456,89,42,689,454,897,40,56,787,894564,8,7];
       //遍历,利用循环,将第一个元素与后面的每一个元素都进行比较,然后length-1是因为遍历到最后一个元素是,没有必要在遍历一次,所以可有可无
       for(var i=0;i<arr.length-1;i++){
        //因为第一次循环已经有两个数进行比较了,所以这次循环长的初始值就为i(当前的次数)+1
        for(var j=i+1;j<arr.length;j++){
            //进行判断,如果第一个的值大于第二个数的值,那么就按照(升序)进行排序
           if(arr[i]>arr[j]){
            //创建一个新的变量,值为空,作为讲个数值交换为位置时存放的位置
            //将arr[1]赋值给type,这时arr[1]为空值
            var type=arr[i];
            //将arr[j]赋值给arr[i],这时arr[j]为空值
            arr[i]=arr[j];
            //将type赋值给arr[j];完成两个数值的位置交换
            arr[j]=type;
           }

        }
       }
       console.log(arr);

    </script>

两种方法 原理都一样。

      <script>
        var arr=[21,5,7,6,65,8,6,36,89]
        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 temp=arr[j];
                    // arr[j]=arr[j+1]
                    // arr[j+1]=temp
                    //这里使用了es6的结构赋值,与上面两个值交换方法一样
                    [arr[j],arr[j+1]]=[arr[j+1],arr[j]]
                }
            }
        }
        console.log(arr);
    </script>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值