zoukankan      html  css  js  c++  java
  • 快速排序 踩坑

    迷糊版本:

        

    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));
    }
     
    区别:在进入函数时迷糊版缓存了数组的长度。导致每次都是使用这个长度,就会无限进入循环然后报错
     
    注:不能缓存长度
  • 相关阅读:
    高性能无锁队列,代码注释
    阿里mysql同步工具otter的docker镜像
    webgl鱼眼算法
    国际网络环境对库的影响
    newlisp
    java面试之数据库
    java面试之遇到过的问题
    java面试之springboot
    git常用命令
    java面试之jenkins
  • 原文地址:https://www.cnblogs.com/tutao1995/p/10521084.html
Copyright © 2011-2022 走看看