题解 | #排序#

排序

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));
}
全部评论

相关推荐

暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务