我是靠谱客的博主 羞涩枕头,这篇文章主要介绍js算法学习——冒泡算法,现在分享给大家,希望可以做个参考。

冒泡排序是最基础最经典的算法题,他主要的目的是为了排序一个数组中元素的顺序,可以将数组中的数据从高到低从低到高进行处理;

具体实现思路

双重嵌套循环进行相邻两个数,然后大的放到小的后边。
let myArray = [40, 10, 30, 6, 65];

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);

运行的基本步骤是

  1. 第一轮最外层循环 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) 条件不成立结束

  2. 第二轮最外层循环 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) 条件不成立结束

  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) 条件不成立结束

  4. 第四轮最外层循环 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) 条件不成立结束

  5. 第四轮最外层循环 x=4,x < length-1(5-1 = 4) 不成立

最后

以上就是羞涩枕头最近收集整理的关于js算法学习——冒泡算法的全部内容,更多相关js算法学习——冒泡算法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部