主要记录和分享个人的整理笔记!

【JavaScript】冒泡排序算法

1、比较相邻的两个元素,如果前一个比后一个大,则交换位置。

2、比较完第一轮的时候,最后一个元素是最大的元素。
3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。

 

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

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

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

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

 1 var arr = [10, 1, 78, 2, 45, 24, 36] //创建待排序数组
 2 console.log('原始数据:' + 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]) { //if第一项大于第二项执行代码
 6             let swap = arr[j] ////swap(互换) 将arr[j]的值放在swap的变量中,然后arr[j]空了
 7                 //swap是临时开辟的空间,若不定义变量直接arr[j] = arr[j + 1],那么会直接把arr[j+1]的值给覆盖掉
 8             arr[j] = arr[j + 1] //再将下标+1的值赋给空的arr[j],现在arr[j]有值了,arr[j+1]空了
 9             arr[j + 1] = swap //再将之前放在swap里的值拿出来赋给空的arr[j+1]就形成了[1,10]
10         }
11     }
12     console.log('第' + i + '次排序:' + arr)
13 }
14 console.log('最终排序:' + arr)

 

  

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

posted @ 2021-06-25 15:20  GraysonLau  阅读(256)  评论(0)    收藏  举报