题解 | #排序#

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

使用快速排序:时间复杂度为O(nlog)

function quickSort(arr) {
    //    4、递归的出口
    if (arr.length<=1){
        return arr;
    }
    //    1、找到基准的位置 先取数组中间位置的数作为基准
    let privotIndex=Math.floor(arr.length/2);
    let privot=arr.splice(privotIndex,1)[0];//把基准这个位置的元素取出来
    let left=[];
    let right=[];
    //    2、然后,开始遍历数组,小于基准的元素放入左边的子集,大于基准的元素放入右边的子集
    for (let i=0;i<arr.length;i++){
        if (arr[i]<privot){
            left.push(arr[i]);
        }else {
            right.push(arr[i]);
        }
    }
    //    3、最后递归不断重复这个过程,Juin可以得到排序后的数组
    return quickSort(left).concat([privot],quickSort(right));
}
全部评论

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务