返回
如何使用JS冒泡排序优化你的项目
前端
2023-12-23 20:47:25
经典版1(实力对决之一个都不能少)
function bubbleSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
经典版2(实力对决之换汤不换药)
function bubbleSort2(arr) {
let swapped;
do {
swapped = false;
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
return arr;
}
经典版3(实力对决之副裁判独担重任)
function bubbleSort3(arr) {
for (let i = 0; i < arr.length; i++) {
let swapped = false;
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) {
break;
}
}
return arr;
}
升级版1(flag心法?比武可能提前结束)
function bubbleSort4(arr) {
let swapped;
let n = arr.length;
do {
swapped = false;
for (let i = 1; i < n; i++) {
if (arr[i - 1] > arr[i]) {
let temp = arr[i - 1];
arr[i - 1] = arr[i];
arr[i] = temp;
swapped = true;
}
}
n--;
} while (swapped);
return arr;
}
升级版2(左右互博之术?副裁判得周伯通真传)
function bubbleSort5(arr) {
let swapped;
let left = 0;
let right = arr.length - 1;
do {
swapped = false;
for (let i = left; i < right; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
right--;
for (let i = right; i > left; i--) {
if (arr[i] < arr[i - 1]) {
let temp = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = temp;
swapped = true;
}
}
left++;
} while (swapped);
return arr;
}
升级版3(一夫当关万夫莫开之势)
function bubbleSort6(arr) {
for (let i = 0; i < arr.length; i++) {
let swapped = false;
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) {
break;
} else {
i = -1;
}
}
return arr;
}
以上是JS冒泡排序的6种写法,每种写法都有其独特的优势和劣势,您可以根据自己的项目需求选择最合适的写法。