javascript快速排序

假如让你写一个排序,你会怎么写呢?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))
    }
View Code

整体思想:切割→站队,如此递归

在没接触这个算法之前还真有点蒙圈,肯定会想着写两个for循环对比得了,但是,两个for循环,整体的运算次数绝对要大于上边这个排序

posted @ 2015-12-09 22:31  丶More  Views(168)  Comments(0)    收藏  举报