- 比较相邻元素,如果第 1 个比第 2 个元素大,交换它们
- 一轮下来,可以保证最后 1 个元素是最大的
- 比较 arr.length - 1 轮,大的往后冒,完成排序
-
代码核心逻辑
两层 for 循环
- 第 1 层 for 循环代表比较的第几轮 i,i 从 0 开始,i < arr.length - 1 轮(最多比较 arr.length - 2 轮,剩下最后 1 个不用比较)
第 2 层 for 循环代表待比较的元素下标 j,从下标 0 的元素依次和相邻元素比较,下标 < arr.length - 1 - i (因为比较 1 轮,后面排好 1 个元素,待比较的元素最大下标是 arr.length - 1 - i )
代码
```javascript function bubbleSort(arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
} }
return arr; }
const arr = [3, 2, 9, 1, 4, 8, 5, 7, 0, 6];
console.time(); console.log(bubbleSort(arr)); console.timeEnd();
// default: 0.293212890625 ms ```