用递归实现数组快速排序,思路:
1、先找出数组中 中间的数
2、创建左边、右边的空数组
3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中;
4、如果数组被分到只有一个数的时候 函数结束 返回数组
5、递归
function quickSort(arr) { //创建函数
var mid = arr.length % 2 == 0 ? arr.length / 2 : (arr.length + 1) / 2; //取出数组中中间的数字
var left = []; //创建左边的空数组
var right = []; //创建右边的空数组
if(arr.length < 2)
return arr; //递归的结束条件
}
for(var i = 0; i < arr.length; i++) { //循环遍历
if(mid != i && arr[i] < arr[mid]) { // 不让数组中 中间的数 与自己进行比较
left.push(arr[i]) //如果数字比中间数小 就放到左边的数组
}
if(mid != i && arr[i] > arr[mid]) {
right.push(arr[i]) //如果数字比中间数大 就放到右边的数组
}
}
return fn(left).concat(arr[mid]).concat(fn(right)) //递归 将左边的数组与右边的数组再进行划分
}