快速排序的思想很简单,三步完成:
-
在数组,挑出来一个元素,作为
pivot
(基准) -
所有小于等于
pivot
的元素,都放到left
数组,所有大于pivot的元素,都放到right
数组。 -
对
left、right
数组,不断重复第一步和第二步,直到数组中只剩下一个元素为止。
javascript代码如下:
1 var arr=[3,5,6,3,35,8,5,656,8,98,5,659,8,95,5,6,89,8,7,4,1] //定义一个名为arr的数组 2 3 const set=arr=>{ 4 if(arr.length<=1) return arr //如果数组的长度小于等于1就直接返回 5 let pivot= arr.splice(Math.ceil(arr.length/2),1)[0]//去中间的值为基准 6 let right =[]; //定义right数组 7 let left=[]; //定义 left数组 8 arr.forEach(row=>row<=pivot ? left.push(row):right.push(row)) //forEach循环遍历,用三目运算符判断 9 return [...set(left),pivot,...set(right)]//递归 10 } 11 console.log(set(arr))