00:00:00
20
200ms
0
比较次数
0
交换次数
0
当前步骤
冒泡排序 详情
通过重复走访待排序数组,每次比较相邻元素并交换顺序错误的元素,直到无交换为止。适合小规模数据,时间复杂度O(n²)。
算法步骤:
- 比较相邻的两个元素,若前者大于后者则交换位置
- 从数组起始遍历到末尾,完成后最大元素会“冒泡”到末尾
- 排除已排序的末尾元素,重复上述步骤
- 直到所有元素排序完成
function bubbleSort(arr) {
const n = arr.length;
let comparisons = 0;
let swaps = 0;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
comparisons++;
if (arr[j] > arr[j + 1]) {
// 交换元素
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
swaps++;
}
}
}
return { sortedArr: arr, comparisons, swaps };
}