来封装一个快速排序方法吧。
思路:
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))