构思
比如一个数组: var arr=[32,45,78,9,1,6]
第一步:找一个基点,比如找32,建立左右2个空数组
第二步:根据基点把大于基点的数放右边数组,小于基点的数放左边数组
于是有:左数组 [9,1,6] 右数组 [45,78]
第三步:对左右数组进行排序,(前提数组长度大于等于2)
第四步:整合数组就行
代码如下
var arr=[32,45,78,9,1,6];
function f(arr) {
//先找一个基点32 ,都32小的放入左数组,比32大的放入右数组
var jd=arr[0];
var left_arr=[];
var right_arr=[];
for (var i=1;i<arr.length;i++){
if (arr[i]>jd) {
right_arr.push(arr[i]);
}else {
left_arr.push(arr[i]);
}
} //遍历数组
//左右数组分好后,对左右数组进行排序 里面的数组长度一定要大于2,不然没意义
if (left_arr.length>=2){
left_arr=f(left_arr);
}
if (right_arr.length>=2) {
right_arr=f(right_arr);
}
return left_arr.concat(jd,right_arr);
}
let a =f(arr);
console.log(a);
控制台输出: