• 快速排序 踩坑


    迷糊版本:

        

    function quickSort(arr){
    var arrLen = arr.length;
    if(arrLen <= 1){
    return arr
    }
     
    var pivotIndex = Math.floor(arrLen/2);
     
    var pivot = arr.splice(pivotIndex,1)[0];
    var left = [];
    var right = [];
    for(var i=0;i<arrLen;i++){
    if(arr[i]<pivot){
    left.push(arr[i])
    }
    else{
    right.push(arr[i])
    }
    }
    return quickSort(left).concat([pivot], quickSort(right));
     
    }
     
    正版:
     
     
    function quickSort(arr){
    //如果数组<=1,则直接返回
    if(arr.length<=1){return arr;}
    var pivotpivotIndex =Math.floor(arr.length/2);
    //找基准,并把基准从原数组删除
    var pivot=arr.splice(pivotpivotIndex ,1)[0];
    //定义左右数组
    var left=[];
    var right=[];

    //比基准小的放在left,比基准大的放在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));
    }
     
    区别:在进入函数时迷糊版缓存了数组的长度。导致每次都是使用这个长度,就会无限进入循环然后报错
     
    注:不能缓存长度
  • 相关阅读:
    centos7下查看端口是否被占用
    centos7通过yum安装redis
    centos7下mysql远程连接
    centos7通过yum安装JDK1.8
    Jwt系列2:使用
    Jwt系列1:简介
    Python基础语法
    排序
    利用MultipartFile来进行文件上传
    服务器端跳转和客户端跳转
  • 原文地址:https://www.cnblogs.com/tutao1995/p/10521084.html
Copyright © 2020-2023  润新知