算法基础 - 冒泡排序

冒泡排序,就是将两个数进行比较,大的数向一个固定方向移动,然后大的数再与下一个数比较并移动,在数组中重复该动作,就能将当前最大的数移到一侧,然后再从数组头部开始,重复比较和移动动作,最后所有的数都会按照从小到大的顺序排列

这里有非常直观的可视化排序过程:visualgo

思路

如果要从小到大排列数组里的数字

首先,对数组进行遍历,每次取两个数进行比较,如果左侧的数比右侧的大,则交换两者的位置;

然后,再次对剩余的部分数字进行循环;

实现

function bubble(target){
    for(let m=0; m<target.length; m++){
        for( let i=0; i<target.length-1-m; i++ ){
            if(target[i]>target[i+1]){
                // 使用es6的解构赋值
                [target[i],target[i+1]] = [target[i+1],target[i]];
            }
        }
    }
}

测试用例

const testArray = [42,30,45,16,40,7,11,45,33,12,14,30,35,32,4,2];
function bubble(target){
    for(let m=0; m<target.length; m++){
        for( let i=0; i<target.length-1-m; i++ ){
            if(target[i]>target[i+1]){
                // 使用es6的解构赋值
                [target[i],target[i+1]] = [target[i+1],target[i]];
            }
        }
    }
}
bubble(testArray);
console.log(testArray);
作者

BiteByte

发布于

2020-09-01

更新于

2024-01-11

许可协议