首页 > 编程语言 > 详细

【JavaScript】冒泡排序讲解

时间:2021-06-25 16:53:04      阅读:21      评论:0      收藏:0      [点我收藏+]

1、比较相邻的两个元素,如果前一个比后一个大,则交换位置。
2、比较完第一轮的时候,最后一个元素是最大的元素。
3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。

 

假设数组中有n个数,则需要n轮,而每一轮中比较的次数都要减去已经确定的数值,即第i轮需要比较的次数为:n-i,可以用一个嵌套for循环来实现

直接上代码,先看一下整体代码

 1 var arr1 = [10,1,78,2,45,24,36];
 2 let Sort = (arr) => {
 3     for (i = 0; i < arr.length - 1; i++) {
 4         for (j = 0; j < arr.length - i - 1; j++) {
 5             if (arr[j] > arr[j + 1]) {
 6                 let swap = arr[j]
 7                 arr[j] = arr[j + 1]
 8                 arr[j + 1] = swap
 9             }
10         }
11     }
12     return arr
13 }

 

再看一下代码注释,为了更好的看清楚排序过程,我们将每一次排序的结果在控制台输出

 1 var arr1 = [10, 1, 78, 2, 45, 24, 36];  //创建待排序数组
 2 let Sort = (arr) => { //sort(排序)
 3     console.log("原始数据:" + arr1)  //原始数据
 4     for (i = 0; i < arr.length - 1; i++) { //外层循环控制循环多少趟,当每执行
 5         for (j = 0; j < arr.length - i - 1; j++) {  //内层循环控制每趟循环多少次
 6             if (arr[j] > arr[j + 1]) { //if第一项大于第二项执行代码
 7                 let swap = arr[j]  //swap(互换) 将arr[j]的值放在swap的变量中
 8                 //swap是临时开辟的空间,若不定义变量直接arr[j] = arr[j + 1],那么会直接把arr[j+1]的值给覆盖掉
 9                 arr[j] = arr[j + 1]  //再将下标1的45放在下标2的24的位置上
10                 arr[j + 1] = swap  //将下标为2的24再赋值给swap就形成了[1,24,45],再依次往后执行判断
11             }
12         }
13         console.log("第" + i + "次排序" + arr)
14     }
15     return arr
16 }
17 console.log("最终排序:" + arr1)
18 console.log(Sort(arr1));  //[1, 2, 10, 24, 36, 45, 78]

 

 
技术分享图片

 

 可以清楚的看到,通过6次排序得到了最终有小到大排列的数组。这样我们就是实现了冒泡排序的算法

【JavaScript】冒泡排序讲解

原文:https://www.cnblogs.com/grayson0626/p/14930975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!