使用遞歸實現一個數組的快速排序


快速排序思想,整個排序過程只需3步:

1.找一個基准點。

2.建立兩個數組,分別放在左右兩邊。

3.利用遞歸,進行下一次的比較。

        function sortarr(arr){

            //instanceof Array判斷 取反的arr是否是數組
            if(!arr instanceof Array){
                return;
            }

            //判斷arr的個數是否小於1
            if(arr<=1){
                return arr;
            }

            // 獲取中間數的下標
            var num =Math.floor(arr.length/2);

            // 獲取中間值
            var value =arr.splice(num,1);

            // 小於中間數
            var left =[ ];
            // 大於中間數
            var right =[ ];

            for(var i=0;i<arr.length;i++ ){

                if(arr[i] < value){
                    left.push(arr[i]);  
                }else{ 
                    right.push(arr[i]);
                }
            }

            // 將左右容器遞歸比較,並連接起來
            return sortarr(left).concat(value,sortarr(right));


        }
        console.log(sortarr([20,40,21,44,21,50,12,6,8,10,80,33]));   //6, 8, 10, 12, 20, 21, 21, 33, 40, 44, 50, 80

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM