冒泡排序是一种简单的排序算法。它重复地遍历待排序的列表,比较相邻的元素并交换位置,如果它们的顺序错误。这个过程会重复进行,直到整个列表排序完成。下面是用 JavaScript 实现的冒泡排序算法:
function bubbleSort(arr) {
let n = arr.length;
let swapped;
do {
swapped = false;
for (let i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
// 交换 arr[i] 和 arr[i + 1]
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
// 每次遍历后,最大的元素会移动到数组末尾
n--;
} while (swapped);
return arr;
}
// 示例使用
const array = [64, 34, 25, 12, 22, 11, 90];
console.log("未排序数组: " + array);
const sortedArray = bubbleSort(array);
console.log("排序后数组: " + sortedArray);
解释:
- 函数定义:
bubbleSort(arr)
接受一个数组作为参数。 - 变量初始化:
n
:数组的长度。swapped
:布尔变量,用于检查是否进行过交换。
- 外层循环:使用
do-while
循环,以确保至少执行一次排序过程。swapped
设置为false
,表示当前没有交换。
- 内层循环:遍历数组,比较相邻元素:
- 如果
arr[i]
大于arr[i + 1]
,则交换它们的位置,并将swapped
设置为true
。
- 如果
- 减少范围:在每次遍历后,最大的元素会移动到数组的末尾,因此可以减少下一次遍历的范围(
n--
)。 - 返回结果:返回排序后的数组。
示例输出:
未排序数组: 64,34,25,12,22,11,90
排序后数组: 11,12,22,25,34,64,90
这个算法的时间复杂度为 (O(n^2)),适用于小规模数据的排序。
标签:arr,遍历,swapped,冒泡排序,js,算法,数组,排序 From: https://www.cnblogs.com/jocongmin/p/18300707