冒泡排序

发布时间:2021-04-06 作者:yaming042 阅读量:- 本文字数:3k 阅读时长 ≈ 3 分钟

作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。

冒泡排序,通俗点说就是数组里,前后两个数依次比较,永远把最大/最小的放后面,这样当你遍历完整个数组后,数组就变成有序的了。

算法步骤

  1. 比较相邻的两个元素,如果第一个比第二个大,那么则交互他俩的位置;
  2. 对后续的元素分别执行步骤1,直到最后一组,比对完成后,最后一个就是数组中最大的值;
  3. 步骤1,2找到了第一个最大的数。此时再次遍历数组,对数组中剩余所有元素跑一遍步骤1,2;
  4. 因为每次需要比较的数组越来越短,知道比较完所有元素,此时的数组就是排好序的数组;

过程如图:
冒泡排序

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function bubbleSort(arr=[]){
let length = arr.length;
for(let i=0;i<length-1;i++){
for(let j=0;j<length-1-i;j++){
if( arr[j] > arr[j+1] ){ // 两两比较找大的
let temp = arr[j+1]; // 下面交互下前后位置

arr[j+1] = arr[j];
arr[j] = temp;
}
}
}

return arr;
}
console.log( bubbleSort([2,4,7,1,4]) ); //[ 1, 2, 4, 4, 7 ]