快速排序

微笑、不失礼 提交于 2020-03-25 11:24:06

3 月,跳不动了?>>>

  1. 第一种方式:

    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]




















  2. 第二种方式

    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));//链接左数组、基准数构成的数组、右数组











    归并排序

    
    
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!