冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。
元素项向后移动至正确的顺序
就好像气泡升至表面一样,从一个小气泡慢慢变大,交换的过程就可以类比成变大的过程,所以叫冒泡排序。

简化:
有n个数
需要比较n轮
每轮需要比较n - 1次

1
2
3
4
5
6
7
8
9
let array = [5,4,3,2,1]
for(let i = 0; i < array.length; i++){ 
	for(let j = 0; j < array.length - 1; j++){
  	if(array[j] > array [j+1]){
    	[array[j],array[j+1]] = [array[j+1],array[j]]	//解构赋值
    }
  }
}
console.log(array)

优化: 每轮比较后,最大的数占了一个位置,所以下一轮比较的次数可以比上一轮少一次

1
2
3
4
5
6
7
8
9
let array = [5,4,3,2,1]
for(let i = 0; i < array.length; i++){ 
	for(let j = 0; j < array.length - i - 1; j++){
  	if(array[j] > array [j+1]){
    	[array[j],array[j+1]] = [array[j+1],array[j]]	//解构赋值
    }
  }
}
console.log(array)

冒泡排序与其他排序算法相比,是最符合大脑直观感受的,也是最简单的,但是与其他排序算法比较,也是时间复杂度(O^2)最高的。