如何在 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 表示

Python并发编程教学视频:从入门到进阶,玩转多线程和多进程
https://jb123.cn/python/65510.html

AJAX详解:并非一种脚本语言,而是异步刷新网页的利器
https://jb123.cn/jiaobenyuyan/65509.html

脚本语言的特点及应用场景深度解析
https://jb123.cn/jiaobenyuyan/65508.html

Tcl脚本语言取绝对值:方法详解与应用场景
https://jb123.cn/jiaobenyuyan/65507.html

Python浪漫编程:用代码绘制爱心,表达你的程序员式浪漫
https://jb123.cn/python/65506.html
热门文章

JavaScript (JS) 中的 JSF (JavaServer Faces)
https://jb123.cn/javascript/25790.html

JavaScript 枚举:全面指南
https://jb123.cn/javascript/24141.html

JavaScript 逻辑与:学习布尔表达式的基础
https://jb123.cn/javascript/20993.html

JavaScript 中保留小数的技巧
https://jb123.cn/javascript/18603.html

JavaScript 调试神器:步步掌握开发调试技巧
https://jb123.cn/javascript/4718.html