前端面试

实现一个快排 (使用拆分递归)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function quickSort(arr){
if(arr.length<=1){
return arr;
}
var num = Math.floor(arr.length/2) //如果为浮点数则向下取整
var numValue = arr.splice(num,1) //得到中间值
var left = [];
var right = [];
for(int i=0;i<arr.length;i++){
if(arr[i]<numValue){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat(numValue,quickSort(right)) //递归不断重复比较
}