算法基础 - 冒泡排序
冒泡排序,就是将两个数进行比较,大的数向一个固定方向移动,然后大的数再与下一个数比较并移动,在数组中重复该动作,就能将当前最大的数移到一侧,然后再从数组头部开始,重复比较和移动动作,最后所有的数都会按照从小到大的顺序排列
这里有非常直观的可视化排序过程: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);
算法基础 - 冒泡排序