我是靠谱客的博主 羞涩枕头,最近开发中收集的这篇文章主要介绍js算法学习——冒泡算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

具体实现思路

双重嵌套循环进行相邻两个数,然后大的放到小的后边。
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);

运行的基本步骤是

  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算法学习——冒泡算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部