Javascript利用递归实现数组的快速排序

// 定义快速排序方法
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]

 

posted @ 2016-06-14 11:19  奔跑的蜗牛~  阅读(1115)  评论(0编辑  收藏  举报