JS排序算法(一) 快速排序

思路:

  1. 每次先找到数组中间的那个值作为基准
  2. 把小于基准值的放在一个数组里,把大于等于基准值的放在另外一个数组里。注意:基准值就不要再跟自身相比了
  3. 把得到的两个数组再次递归调用。注意:不要忘了把基准值拼接在中间,想按从大到小呐就把大于基准值的那个数组拼接在最前面就好了
var arr = [1,5,32,6,3,6,43,2];
function quickSort(arr) {
    if (arr.length <= 1) return arr;
    var leftArr = [], //这个用于存放小于基准值的数组
        rightArr = [], // 这个用于存放大于基准值的数组
        middleIndex = Math.floor(arr.length / 2),  // 找到中间的基准值的索引
        middleValue = arr.splice(middleIndex,1)[0]; //得到中间基准值,顺便把当前基准值忽略掉,避免重复比较
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < middleValue) {
            leftArr.push(arr[i]);
        } else {
            rightArr.push(arr[i]);
        }
    }
    return quickSort(leftArr).concat(middleValue,quickSort(rightArr))
}

var res = quickSort(arr);
console.log(res); //[1, 2, 3, 5, 6, 6, 32, 43]


posted @ 2020-03-22 23:04  前端小学生OvO  阅读(243)  评论(0编辑  收藏  举报