Fork me on GitHub

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>

 

posted @ 2016-11-14 23:54  小数点就是问题  阅读(595)  评论(0编辑  收藏  举报