如何在 JavaScript 中高效排序347


排序是计算机科学中的一项基本操作,它将一组元素按特定顺序排列。在 JavaScript 中,我们可以使用内置的排序方法以及自定义排序算法来对数组进行排序。

内置排序方法JavaScript 提供了几种内置的排序方法:
* sort():按 Unicode 代码点进行字典排序,但不会修改原始数组。
* sort() 接受比较函数:使用比较函数对数组进行自定义排序,修改原始数组。
* sort() 接受参数数组:使用指定比较函数对数组进行排序,修改原始数组。
* reverse():将数组反转,相当于降序排序。

sort() 方法



const numbers = [3, 1, 5, 2, 4];
(); // [1, 2, 3, 4, 5]

当 sort() 方法不带参数时,它使用 Unicode 代码点对数组中的元素进行字典排序。

sort() 方法接受比较函数



const numbers = [3, 1, 5, 2, 4];
((a, b) => a - b); // [1, 2, 3, 4, 5]

我们可以传递一个比较函数给 sort() 方法,该函数指定比较两个元素的顺序。当比较函数返回负值时,a 排在 b 之前;当返回正值时,b 排在 a 之前;当返回零时,a 和 b 保持原始顺序。

sort() 方法接受参数数组



const numbers = [3, 1, 5, 2, 4];
([ (a, b) => a - b, (a, b) => b - a ]); // [1, 2, 3, 4, 5]

我们可以传递一个参数数组给 sort() 方法,其中包含多个比较函数。比较函数按顺序应用,直到数组被排序。

reverse() 方法



const numbers = [3, 1, 5, 2, 4];
(); // [4, 2, 5, 1, 3]

reverse() 方法将数组中的元素倒置,相当于降序排序。

自定义排序算法除了使用内置的排序方法,我们还可以实现自己的排序算法。JavaScript 中常用的自定义排序算法包括:
* 冒泡排序
* 选择排序
* 插入排序
* 快速排序
* 归并排序

冒泡排序



function bubbleSort(arr) {
for (let i = 0; i < ; i++) {
for (let j = 0; j < - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}

冒泡排序通过比较相邻元素并交换它们,将较大元素逐步移到数组末尾。

选择排序



function selectionSort(arr) {
for (let i = 0; i < - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < ; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
return arr;
}

选择排序找到数组中剩余元素中的最小值,然后将其与当前元素交换。

插入排序



function insertionSort(arr) {
for (let i = 1; i < ; i++) {
let key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr;
}

插入排序将当前元素插入到已经排序的子数组中,以保持有序性。

快速排序



function quickSort(arr, low, high) {
if (low < high) {
let pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
function partition(arr, low, high) {
let pivot = arr[high];
let partitionIndex = low;
for (let i = low; i < high; i++) {
if (arr[i]

2024-12-31


上一篇:JavaScript 表示

下一篇:JavaScript 中使用 DLL 文件