JS之快速排序

方式一:理解简单,但是因为在递归时,会呈倍数的创建变量

(基准值取数组第一个数)

       function quickSort(arr){
            if(arr.length <= 1){
                return arr;
            }

            var leftArr = [];
            var rightArr = [];
            var cankao = arr.splice(0,1);
            
            for(var i=0; i<arr.length; i++){
                if(arr[i]>cankao[0]){
                    rightArr.push(arr[i]);
                }else{
                    leftArr.push(arr[i]);
                }
            }
            return quickSort(leftArr).concat(cankao[0],quickSort(rightArr));
        }

        var arr1 = [2,3,1,9,2,6,3,1,3];
        console.log(quickSort(arr1));   

方式二:实用版,性能比方式一实现更优

        function sort(arr, left, right)
        {
            if(left >= right)
            {
                return ;
            }
            var i = left;
            var j = right;
            var key = arr[left];
            
            while(i < j)                               
            {
                while(i < j && key <= arr[j])
                {
                    j--;
                }
                
                arr[i] = arr[j];
                
                while(i < j && key >= arr[i])
                {
                    i++;
                }
                arr[j] = arr[i];
            }
            arr[i] = key;
            sort(arr, left, i - 1);
            sort(arr, i + 1, right);
        }

        var Arr = [1,7,2,7,3,1,4,2];
        sort(Arr,0,7)
        console.log(Arr);

猜你喜欢

转载自www.cnblogs.com/qianbin/p/10099383.html