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轮

 

posted @   jineslee  阅读(359)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示