标签:
假如让你写一个排序,你会怎么写呢?for循环搞定吗?来看下边这个是怎么实现的:
function quickSort(arr){ if(arr.length<=1){ return arr; } var num = Math.floor(arr/2); var numValue = arr.splice(num,1); var left=[]; var right=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<numValue){ left.push(arr[i]); }else{ right.push(arr[i]); } } return arguments.callee(left).concat([numValue],arguments.callee(right)) }
整体思想:切割→站队,如此递归
在没接触这个算法之前还真有点蒙圈,肯定会想着写两个for循环对比得了,但是,两个for循环,整体的运算次数绝对要大于上边这个排序
标签:
原文地址:http://www.cnblogs.com/nonmingbobo/p/5034525.html