排序算法,搞代码的大佬们想必非常熟悉,快速排序又难免会用到,今天就来简单实现一个排序算法。
//假如有这样一个数组let arr=[12,3,45,0,31,7];要实现升序
//要求用快速排序实现
1:快速排序:分治思想,先确定基准值,将原数组分两部分,比基准值小的放左边,大的放右边;然后结合递归思想调用方法,直到数组长度为一即排好序。最后将左部分和基准值,右部分进行拼接
function quickSort(arr) {
//如果数组只有一项,则返回
if(arr.length<=1)return arr;
//获取基准索引
let mid = Math.floor(arr.length/2);
let midVal=arr.splice(mid,1);
let left=[];
let right=[];
for(let i=0;i<arr.length;i++){
//遍历每项并和基准值计较大小
if(arr[i]<midVal){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//递归调用
return quickSort(left).concat([midVal],quickSort(right));
}
执行quickSort(arr);
输出(7) [0, 3, 7, 12, 31, 45]
熟能生巧,算法还是要常写常用的,人的记忆曲线就是这样,不用就会慢慢遗忘!