冒泡排序
基本概念
冒泡排序的特点是:
- 假设有n个数要升序,每一轮从第一个数开始,与后面的数进行比较,比它大就交换位置,这样一轮下来,最大的数就跑到最后一个位置了。
- 第二轮也是从第一个数开始,与后面的n-1个数比较,为什么是n-1个?因为第一轮的时候最大值已经放到最后位置,所以最后一个数不用比较了,第二轮比较完,倒数第二大值就会跑到倒数第二的位置,以此类推。
- n个数一共要进行 n-1 轮比较,每一轮比较完最大值都会跑到后面,所以称之为冒泡。
例如对[4,5,2,3,1]进行排序
第一轮:[ 4, 2, 3, 1, 5 ]
第二轮:[ 2, 3, 1, 4, 5 ]
第三轮:[ 2, 1, 3, 4, 5 ]
第四轮:[ 1, 2, 3, 4, 5 ]
代码实现
function bubbleSort(arr) {
let n = arr.length
// 一共要比较n-1轮
for (let i = 0; i < arr.length - 1; i++) {
// 每轮从第一个开始和后面的数比较,把最大的数放到最后
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换位置
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
console.log(arr)
}
return arr
}
console.log(bubbleSort([4,5,2,3,1]))