快速排序

筅森魡賤 提交于 2019-12-27 00:36:01

原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归,以此达到整个数据变成有序序列。

 var arr=[9,8,7,6,5,4];
    console.log(quick(arr));
    function quick(num){
        if (num.length <= 1) {
            return num;
        }
        var midindex=parseInt(num.length / 2);//数组长度除二取整得到中间索引
        var midnum=num.splice(midindex,1);//splice中为从midindex处开始删除,删除1个元素,返回值为所删除元素,及取中间元素。
        var left=[];//定义两个空数组存放所分的元素
        var right=[];
        for(var i=0;i<num.length;i++){
            if(num[i]<midnum){
                left.push(num[i]);
            }else{
                right.push(num[i]);
            }
        }
        return quick(left).concat(midnum).concat(quick(right));
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!