标签:math ++ 一个 floor quick cat 直接 log 返回
第一种方式:
function qSort(arr) {
//声明并初始化左边的数组和右边的数组
var left = [], right = []
//使用数组最后一个元素作为基准值
var base = arr[arr.length - 1]
//当数组长度只有1或者为空时,直接返回数组,不需要排序
if(arr.length <= 1) return arr
//进行遍历
for(var i = 0, len = arr.length; i < len - 1; i++) {
if(arr[i] <= base) {
//如果小于基准值,push到左边的数组
left.push(arr[i])
} else {
//如果大于基准值,push到右边的数组
right.push(arr[i])
}
}
//递归并且合并数组元素
return [...qSort(left), ...[base], ...qSort(right)]
}
const arr = [2, 4, 1, 5, 3, 1]
const s = qSort(arr)
console.log(s) // [1, 1, 2, 3, 4, 5]
第二种方式
ar quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2); //基准位置(理论上可任意选取)
var pivot = arr.splice(pivotIndex, 1)[0];//基准数
var left = [];
var right = [];
for (var 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));//链接左数组、基准数构成的数组、右数组
标签:math ++ 一个 floor quick cat 直接 log 返回
原文地址:https://www.cnblogs.com/felearn/p/kuai-su-pai-xu.html