每天一个排序算法 ---冒泡排序

72 阅读1分钟

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

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

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)

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

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(n2n^2) )最高的。