-
Array.prototype.sort()
用于对数组的元素进行排序。该方法可以接受一个可选的比较函数,以确定数组中元素的排序方式。如果没有提供比较函数,数组元素将按照转换为字符串的顺序进行排序。
它一般会使用快速排序(Quick Sort)、归并排序(Merge Sort)或插入排序(Insertion Sort)等高效的排序算法。
具体使用哪种算法取决于引擎的实现和数组的大小。
// 默认排序,根据字符串unicode进行排序
const arr = [10, 2, 30, 1];
arr.sort(); // 结果为 [1, 10, 2, 30]
// 自定义排序(使用比较函数)
const arr = [10, 2, 30, 1];
arr.sort(function(a, b) {
return a - b || 0;
}); // 结果为 [1, 2, 10, 30]
- 冒泡排序(用于教学或小数据集)
function bubbleSort(arr) {
let len = arr.length
let swapped
do {
swapped = false
for (let i = 1;i < len;i++) {
if (arr[i - 1] > arr[i]) {
[ arr[i - 1], arr[i] ] = [ arr[i], arr[i - 1] ]
swapped = true
}
}
len--
} while(swapped)
}
// 示例使用
let array = [ 61, 32, 25, 11, 23, 12, 91 ]
console.log( 原数组: , array)
bubbleSort(array)
console.log( 排序后数组: , array)
- 快速排序(对于超级大的数据集)
function quickSort(arr) {
if (arr.length <= 1) {
return arr
}
// 选择基准值
const middle = Math.floor(arr.length / 2)
const pivot = arr[middle]
const left = []
const right = []
const equal = []
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i])
} else if (arr[i] > pivot) {
right.push(arr[i])
} else {
equal.push(arr[i])
}
}
return [ ...quickSort(left), ...equal, ...quickSort(right) ]
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容