zoukankan      html  css  js  c++  java
  • javascript中的冒泡排序

    冒泡排序:就是将一个数组中的元素按照从大到小或者从小到大的顺序进行排列。

    var array=[9,8,7,6,5,4,3,2,1];

    第一轮比较:8,7,6,5,4,3,2,1,9      交换了8次        i=0   j=array.length-1-i

    第二轮比较:7,6,5,4,3,2,1,8,9      交换了7次        i=1   j=array.length-1-i

    第三轮比较:6,5,4,3,2,1,7,8,9      交换了6次        i=2   j=array.length-1-i

    第四轮比较:5,4,3,2,1,6,7,8,9      交换了5次        i=3   j=array.length-1-i

    第五轮比较:4,3,2,1,5,6,7,8,9      交换了4次        i=4   j=array.length-1-i

    第六轮比较:3,2,1,4,5,6,7,8,9      交换了3次        i=5   j=array.length-1-i

    第七轮比较:2,1,3,4,5,6,7,8,9      交换了2次        i=6   j=array.length-1-i

    第八轮比较:1,2,3,4,5,6,7,8,9      交换了1次        i=7   j=array.length-1-i

    代码实现:

    var  temp;
    var array=[9,8,7,6,5,4,3,2,1];
    //外循环控制轮数
    for(var i=0;i<array.length-1;i++){
    //内循环控制比较次数
        for(var j=0;j<array.length-1-i;j++){
            if(array[j]>array[j+1]){
                //交换两个变量
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
    }
    console.log(array);
    代码优化:
    var  temp,bool,m=0;
    var array=[9,8,7,6,5,4,3,2,1];
    for(var i=0;i<array.length-1;i++){
        //开闭原则中的开关
        bool = true;
        for(var j=0;j<array.length-1-i;j++){
            if(array[j]>array[j+1]){
                //交换两个变量
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
                bool=false;//将开关关闭
            }
        }
        //如果内循环中的if没有被执行(开关关闭,执行下面的语句);
        if(bool){
            break;
        }
        m++;
    }
    console.log(array+",比较"+m+"轮");
    
    
    备注:比较轮数最好情况为0轮,最坏为8轮
  • 相关阅读:
    极致:互联网时代的产品设计
    赋能
    从历史看管理
    格调
    @Value注解没有起作用的梳理
    装系统------- 了解常用的启动方式以及如何进入bios
    装系统 ------ 使用微PE 做系统盘
    eclipse ------------- 安装maven ,配置setting文件
    Maven ------ 了解与安装
    sqlException 使用relace 替换单引号
  • 原文地址:https://www.cnblogs.com/lijinblogs/p/5559494.html
Copyright © 2011-2022 走看看