快速排序 踩坑

迷糊版本:

    

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)); }   区别:在进入函数时迷糊版缓存了数组的长度。导致每次都是使用这个长度,就会无限进入循环然后报错   注:不能缓存长度
上一篇:快速排序


下一篇:Luogu5339 [TJOI2019]唱、跳、rap和篮球 【生成函数,NTT】