大家好,我是Emo_TT。今天我来给大家介绍一下JavaScript中几个常用的数组排序方法。
首先是乱序排序,默认从小到大。这个方法是用Math.random()生成随机数来进行排序的,代码如下:
/** * 乱序排序 默认从小到大 * * @method luanXu 数组方法 * @param {Array} arr 传递的数组 */ const luanXu = (arr) => { arr.sort((a, b) => { return 0.5 - Math.random(); }); };
接下来是冒泡排序,默认从小到大。这个排序方法是通过比较相邻两个元素的大小,将大的元素交换到后面,最终得到有序的数组。代码如下:
/** * 冒泡排序 默认从小到大 * * @method maoPao 数组方法 * @param {Array} arr 传递的数组 * @param {String} type 传递的类型默认从小到大不传值,从大到小传递"max" */ const maoPao = (arr, type) => { let temp; for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } if (type == "max") { return arr.reverse(); } else { return arr; } };
最后是快速排序,默认从小到大。快速排序是一种分治的排序算法,将原始数组分成左右两个子数组,再对子数组进行排序,最终将左右两个子数组合并起来。代码如下:
/** * 快速排序 从小到大排序 * * @method quickSort 数组方法 * @param {Array} arr 传递的数组 */ const quickSort = (arr) => { if (arr.length <= 1) return arr; let pivotIndex = Math.floor(arr.length / 2), pivot = arr.splice(pivotIndex, 1)[0], left = [], 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)); };
以上就是JavaScript中三种常用的数组排序方法,希望对大家有所帮助。如果有更好的排序方法,欢迎在评论区留言探讨。