1. sort() 方法
這是數(shù)組原生的排序方法。如果沒有傳入比較函數(shù),元素會被轉(zhuǎn)換為字符串后按照字符編碼順序進行排序。
let fruits = ["cherry", "apple", "banana"];
fruits.sort();
console.log(fruits);
// 輸出: ["apple", "banana", "cherry"]
若要按照自定義規(guī)則排序(如數(shù)字大小排序),可以傳入比較函數(shù)。比較函數(shù)接收兩個參數(shù) a 和 b ,當 a - b < 0 時, a 排在 b 前面;當 a - b = 0 時, a 和 b 位置不變;當 a - b > 0 時, a 排在 b 后面。
例如,對數(shù)字數(shù)組從小到大排序:
let numbers = [5, 3, 8, 2];
numbers.sort((a, b) => a - b);
console.log(numbers);
// 輸出: [2, 3, 5, 8]
2. 冒泡排序
這是一種簡單的排序算法。它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。
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. 插入排序
插入排序的基本操作是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù)。
- 示例如下:
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. 選擇排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。
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 編輯過