// 定义快速排序方法
function quickSort(arr){
// 设置递归的终止条件
if( arr.length <= 1){
return arr;
}
// 获得数组arr的中间索引和中间索引对应的值
var middleNum = Math.floor(arr.length/2);
var middleValue = arr.splice(middleNum, 1);
// 定义数组,left用于存放小于中间值的数,right用于存放大于中间值的数
var left = [];
var right = [];
// 遍历arr数组,并把每一项与中间值作比较,根据条件分别存入left和right数组中
for( var i = 0; i < arr.length; i++ ){
if( arr[i] < middleValue ){
left.push( arr[i] );
} else {
right.push( arr[i] );
}
}
// 通过递归方式分别对left和right数组进行比较,直至达到递归的终止条件,然后组合最终的left、middleNum、right并返回
return quickSort(left).concat(middleValue, quickSort(right));
}
// 测试
var arr = [3,20,16,12,40,32,1,60,55,30];
console.log(quickSort(arr)); // 结果:[1, 3, 12, 16, 20, 30, 32, 40, 55, 60]