- 排序方法:将相邻两个元素进行比较,如果后一个元素大,则交换位置,则每一个循环会得到数据的最大值
- 时间复杂度: O(n^2),不稳定,最好的情况一次循环即可排好即复杂度为O(n)
- 空间复杂度: O(1)
function bubbleSort(arr) {
for (let i = 0, len = arr.length; i < len; i++) {
let flag = true;
for (let j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
flag = false;
}
}
if (flag) return arr;
}
return arr;
}
function bubbleSort(arr) {
[low, high] = [0, arr.length - 1];
while (low < high) {
let flag = true;
for (let i = low; i < high; i++) {
if (arr[i] > arr[i + 1]) {
[arr[i], arr[i + 1]] = [arr[i + 1], arr[i]];
flag = false;
}
}
high--;
for (let j = high; j > low; j--) {
if (arr[j - 1] > arr[j]) {
[arr[j], arr[j - 1]] = [arr[j - 1], arr[j]];
flag = false;
}
}
low++;
if (flag) return arr;
}
return arr;
}