快排

const quick = function quick(arr){
  //4.结束条件:如果传递的数组小于一项,则无需再拆了
  if(arr.length<=1) return arr;
  //1.取出数组中间项
  let middleIndex = Math.round(arr.length/2),
      middleValue=arr.splice(middleIndex,1)[0];
//2.创建左右俩个数组,用原始数组剩下的项和中间项比较,比中间项小的放在左边,大的放在右侧数组中
let arrLeft = [],
    arrRight = [];
for(let i = 0;i<arr.length;i++){
  let item = arr[i];
  item>middleValue?arrRight.push(item):arrLeft.push(item);
}
//3.把左边的、中间项、右侧的拼接在一起即可
return quick(arrLeft).concat(middleValue,quick(arrRight));
}
let arr = [12,8,15,16,1,24];
arr = quick(arr);
console.log(arr);//[1, 8, 12, 15, 16, 24]

 

posted @ 2021-05-22 00:34  林默默  阅读(71)  评论(0)    收藏  举报