js不用sort()进行排序
时间: 2023-07-20 12:09:10 浏览: 189
除了使用 `Array.sort()` 函数进行排序之外,还有多种其他方法可以用来对数组进行排序。以下是一些例子:
1. 冒泡排序
冒泡排序是一种简单的排序算法,可以用来对数组进行排序。它的基本思想是通过不断交换相邻两个元素的位置,将最大的元素逐渐“冒泡”到数组的末尾。实现代码如下:
```javascript
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
const numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
console.log(bubbleSort(numbers)); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
2. 插入排序
插入排序是一种简单的排序算法,可以用来对数组进行排序。它的基本思想是将一个元素插入到已经排序好的部分数组中,使得插入后的数组仍然有序。实现代码如下:
```javascript
function insertionSort(arr) {
let len = arr.length;
for (let i = 1; i < len; i++) {
let j = i - 1;
let temp = arr[i];
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
return arr;
}
const numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
console.log(insertionSort(numbers)); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
3. 快速排序
快速排序是一种高效的排序算法,可以用来对数组进行排序。它的基本思想是通过递归的方式将数组分成两部分,并通过比较和交换的方式将元素移动到正确的位置。实现代码如下:
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let pivotIndex = Math.floor(arr.length / 2);
let pivot = arr.splice(pivotIndex, 1)[0];
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
const numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
console.log(quickSort(numbers)); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
注意,这里的快速排序算法使用递归的方式进行实现。为了避免栈溢出的问题,可以使用尾递归优化或者非递归的方式进行实现。