概述
冒泡排序是最基础最经典的算法题,他主要的目的是为了排序一个数组中元素的顺序,可以将数组中的数据从高到低从低到高进行处理;
具体实现思路
双重嵌套循环进行相邻两个数,然后大的放到小的后边。
let myArray = [40, 10, 30, 6, 65];
function bubbling(arr){
// 外层循环,从第一个开始循环,一直查找到数组的倒数第二个
for(let x = 0; x < arr.length-1; x++){
// 内层循环,从第一个开始循环,一直查找到上次已经放到后边的前一个
for(let y = 0; y < arr.length - 1 + x; y++){
// 如果当前的项,比下一个项大,就进行位置调换,然后下一轮在比较
if(arr[y] > arr[y+1]){
let temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
return arr;
}
bubbling(myArray);
运行的基本步骤是
-
第一轮最外层循环 x=0,x < length-1(5-1 = 4)
最开始的数组:[40, 10, 30, 6, 65]
1)、内层循环第一轮 x = 0、y = 0、y < length-1-x(5-1-0 = 4)
拿出 40 和10进行比较,40大于10,调换位置得到结果 [10, 40, 30, 6, 65]
2)、内层循环第二轮 x = 0、 y = 1、y < length-1-x(5-1-0 = 4)
拿出 40 和30进行比较,40大于30,调换位置得到结果 [10, 30, 40, 6, 65]
3)、内层循环第三轮 x = 0、y = 2、y < length-1-x(5-1-0 = 4)
拿出 40 和6进行比较,40大于6,调换位置得到结果 [10, 30, 6, 40, 65]
4)、内层循环第四轮 x = 0、y = 3、y < length-1-x(5-1-0 = 4)
拿出 40 和30进行比较,40小于65,不调换位置 [10, 30, 6, 40, 65]
5)、内层循环第五轮 x = 0、y = 4、y < length-1-x(5-1-0 = 4) 条件不成立结束 -
第二轮最外层循环 x=1,x < length-1(5-1 = 4)
现在的数组:[10, 30, 6, 40, 65]
1)、内层循环第一轮 x = 1、y = 0、y < length-1-x(5-1-1 = 3)
拿出 10 和30进行比较,10小于20,不调换位置 [10, 30, 6, 40, 65]
2)、内层循环第二轮 x = 1、 y = 1、y < length-1-x(5-1-1 = 3)
拿出 30 和6进行比较,30大于6,调换位置得到结果 [10, 6, 30, 40, 65]
3)、内层循环第三轮 x = 1、y = 2、y < length-1-x(5-1-1 = 3)
拿出 30 和40进行比较,30小于40,不调换位置 [10, 6, 30, 40, 65]
4)、内层循环第四轮 x = 1、y = 3、y < length-1-x(5-1-1 = 3) 条件不成立结束 -
第三轮最外层循环 x=2,x < length-1(5-1 = 4)
现在的数组:[10, 6, 30, 40, 65]
1)、内层循环第一轮 x = 1、y = 0、y < length-1-x(5-1-2 = 2)
拿出 10 和6进行比较,10大于6,调换位置得到结果 [6, 10, 30, 40, 65]
2)、内层循环第二轮 x = 1、 y = 1、y < length-1-x(5-1-2 = 2)
拿出 10 和30进行比较,10小于30,不调换位置 [6, 10, 30, 40, 65]
3)、内层循环第三轮 x = 1、y = 2、y < length-1-x(5-1-2 = 2) 条件不成立结束 -
第四轮最外层循环 x=3,x < length-1(5-1 = 4)
现在的数组:[10, 6, 30, 40, 65]
1)、内层循环第一轮 x = 1、y = 0、y < length-1-x(5-1-3 = 2)
拿出 10 和6进行比较,10大于6,调换位置得到结果 [6, 10, 30, 40, 65]
2)、内层循环第二轮 x = 1、 y = 1、y < length-1-x(5-1-3 = 2)
拿出 10 和30进行比较,10小于30,不调换位置 [6, 10, 30, 40, 65]
3)、内层循环第三轮 x = 1、y = 2、y < length-1-x(5-1-3 = 2) 条件不成立结束 -
第四轮最外层循环 x=4,x < length-1(5-1 = 4) 不成立
最后
以上就是羞涩枕头为你收集整理的js算法学习——冒泡算法的全部内容,希望文章能够帮你解决js算法学习——冒泡算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复