没有最简单只有更简单之-----JavaScript实现快速排序

哇,太简单了。

快排函数三步走,

第一步,选一个基准值,

第二步,比值小的放一个数组,比值大的放另一个数组。

第三步,递归调用快排函数,参数值为左数组和右数组,最后返回左右数组合并数组。

直接附上我六行的代码

function quickSort(arr) {
        if(arr.length<=1) return arr
        let item = arr[0]
        arr.splice(0,1)
        let left = arr.filter(value => {return value<item})
        let right = arr.filter(value => {return value>item})
        return quickSort(left).concat(item,quickSort(right))
    }

如果数组值长度小于1,则直接返回。选个基准值,直接选第一个呗。

小的放left数组,大的放right数组。return 递归调用后的数组。

然后过了几月之后我发现还可以简写!

function quickSort(arr) {
        if(arr.length<=1) return arr;
        let item = arr[0];
        arr.shift();
        let left = arr.filter(value => (value<item))
        let right = arr.filter(value => (value>item))
        return [...quickSort(left),item,...quickSort(right)]
    }

行数不变,很明显,逼格变高了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值