• 三大经典排序算法之最经典之冒泡排序


    排序算法:冒泡排序

    冒泡排序的思想:让数组中的当前项和后一项进行比较,如果当前项比后一项大,则两项交换位置(让大的靠后)即可

    let ary = [12,8,24,16,1];
    第一轮开始比较:
    12>8  交换位置 [8,12,24,16,1]
    12<24  不交换位置  [8,12,24,16,1]
    24>16  交换位置   [8,12,16,24,1]
    24>1  交换位置  [8,12,16,1,24]
    第一轮完成后,虽然没有实现出最后的效果,但是当前数组中最大的这个值24放到了末尾
     
    第二轮开始比较
    8<12  不交换位置  [8,12,16,1,24]
    12<16  不交换位置  [8,12,16,1,24]
    16>1 交换位置 [8,12,1,16,24]
    不用再和24比较了,而且本轮结束剩余值中最大的16也放到末尾了
     
    第三轮比较
    8< 12  不交换位置 [8,12,1,16,24]
    12>1  交换位置 [8,1,12,16,24]
    不用再和16比较了,而且本轮技术剩余值最大的12也放到末尾了
     
    第四轮比较
    8>1  交换位置 [1,8,12,16,24]
    冒泡结束
     
    需要比较length-1轮(5个数,只需要把4个最大的依次放到末尾即可)
    第一轮比较4次,最多比较length-1次(不用和自己比较)
    第二轮比较3次,每一轮比较我们都把当前最大的放到了末尾,所以当前轮比较多少次,需要把之前放到末尾的值也得去掉
    ...
     
    /*冒泡排序*/
    // ary传入的数组
    // return的是返回的新数组
    function bubble(ary){
      let temp = null;
      //外层循环i控制比较的轮数
      for(let i = 0 ; i< ary.length-1; i++){
      //里层循环控制每一轮比较的次数
        for(let j=0;j< ary.length-1-i; j++){
          if(ary[j]>ary[j+1]){
          //当前项大于后一项
            temp = ary[j];
            ary[j] = ary[j+1];
            ary[j+1] = temp;
          }
        }
    }
    return ary;
    }
    let ary = [12,8,24,16,1];
    ary = bubble(ary);
    console.log(ary);
     
  • 相关阅读:
    Python字符编码详解
    Python 编程规范
    希尔排序
    浅析 Python 的 metaclass
    c#通过数据集生成浏览页面
    QQ搜索群参数详解
    扩展名为HTM或HTML的文件图标不能正常显示的解决方案
    利用QQ2009协议,将抓包直接解密出ClientKey(SessionKey)
    用Sql语句还原,分离,删除数据库连接
    asp.net 导出excel 问题 (服务器的部署)
  • 原文地址:https://www.cnblogs.com/itsmart/p/12600325.html
Copyright © 2020-2023  润新知