快速排序

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

    归并排序

    
    

转载于:https://www.cnblogs.com/felearn/p/kuai-su-pai-xu.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值