原理:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
图解:
代码实现:
// 冒泡排序
const bubbleSort = function (arr) {
// 遍历数组 至倒数第二个, 倒数第二个会和最后一个元素(相邻)相比较
// 共需要 arr.length - 1 次的沉底操作
for (let count = 0 ; count < arr.length - 1 ; count++) {
for(let i = 0 ; i < arr.length - 1; i++) { // 该循环完成一次沉底
let currentNumber = arr[i] // 当前数据
let nextNumber = arr[i + 1] // 相邻数据
if (currentNumber > nextNumber) {
// 向右沉 (交换两个位置)
let temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
return arr
}
const s = [22, 8 ,16 ,5 , 47, 1, 10, 3 , 15]
console.log(bubbleSort(s))
结果:
[1, 3, 5, 8, 10, 15, 16, 22, 47]