javascript的快速排序法
在排序方式中,快速是比较普遍使用的,因为其速度快。
因为其是不断的递归,而且是根据基准点的左右两边开始递归,直到数组只有一个值的时候才返回。
这个基准点是自己定的。
一般取中间,比较好理解。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var arr=[5,2,0,-1,4,10]; /*快速排序法*/ /*核心是找到基准点,然后把数组分成两半,一半大于基准点。一半小于基准点, 然后不断的递归,直到数组值只剩一个时,而递归也是重点理解: fastSort(left).concat([center],fastSort(right)) 这样它会不断的执行函数,分两边执行函数,一边为左边,一边为右边 然后根据递归,会不断的分支,所以这个排序方式是比较快的 而基准点值直接合并到数组,因为函数递归的方式是从里到外,所以它会从里面合并到外面 * */ function fastSort(arr){ if(arr.length<=1){ return arr; } var left=[],right=[]; var num=Math.floor(arr.length/2); var center=arr.splice(num,1)[0]; for(var i=0;i<arr.length;i++){ if(arr[i]<center){ left.push(arr[i]); }else{ right.push(arr[i]); } } return fastSort(left).concat([center],fastSort(right)); } console.log(fastSort(arr)); //arr.splice(3,1)返回是一个数组 // console.log(arr.splice(3,1)); </script> </body> </html>