1. sort() 方法
这是数组原生的排序方法。如果没有传入比较函数,元素会被转换为字符串后按照字符编码顺序进行排序。
let fruits = ["cherry", "apple", "banana"];
fruits.sort();
console.log(fruits);
// 输出: ["apple", "banana", "cherry"]
若要按照自定义规则排序(如数字大小排序),可以传入比较函数。比较函数接收两个参数 a 和 b ,当 a - b < 0 时, a 排在 b 前面;当 a - b = 0 时, a 和 b 位置不变;当 a - b > 0 时, a 排在 b 后面。
例如,对数字数组从小到大排序:
let numbers = [5, 3, 8, 2];
numbers.sort((a, b) => a - b);
console.log(numbers);
// 输出: [2, 3, 5, 8]
2. 冒泡排序
这是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
function bubbleSort(arr) {
let n = arr.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
let numbers = [5, 3, 8, 2];
console.log(bubbleSort(numbers));
// 输出: [2, 3, 5, 8]
3. 插入排序
插入排序的基本操作是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。
- 示例如下:
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let current = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = current;
}
return arr;
}
let numbers = [5, 3, 8, 2];
console.log(insertionSort(numbers));
// 输出: [2, 3, 5, 8]
4. 选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
function selectionSort(arr) {
for (let i = 0; i < arr.length; i++) {
let minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex!== i) {
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
let numbers = [5, 3, 8, 2];
console.log(selectionSort(numbers));
// 输出: [2, 3, 5, 8]
该文章在 2024/12/20 11:05:55 编辑过