封装一个快速排序方法

2019-07-14 11:53发布

来封装一个快速排序方法吧。
思路:
1.在数组中取一个中间值,将数组一分为二;
2.判断每个数,小于中间值的放左边,大于中间值的放右边;
3.将这几个数组连接输出。 大概思路就是这个,具体实现看代码吧,反正我的注释一向写的像作文,估计少有看不明白的。 // 封装一个函数 传参arr function mySort(arr){ // 判断如果只有一位或者小于1 if(arr.length <= 1){ // 将当前数组返回 return arr; } // 将数组一分为二向下取整并赋值 let num = Math.floor(arr.length/2); // 将上一步获取到的数组的下标截取对应值重新赋值 // splice可以将中间值不纳入比较范围 let numValue = arr.splice(num,1); // 设置一左一右两个空数组 let left = []; let right = []; // 循环数组 for(let i = 0 ; i < arr.length ; i ++){ // 判断如果小于中间值就放到left,否则放right if(arr[i] < numValue){ left.push(arr[i]) }else{ right.push(arr[i]) } } // 递归,并将left和中间值,以及right连接起来 return mySort(left).concat(numValue,mySort(right)) } // 定义数组 let arr = [1,2,8,7,5,4,6,9,8] // 输出到页面显示 document.write(mySort(arr))