天天看點

快速 排序的思想并實作一個快排?

"快速排序"的思想很簡單,整個排序過程隻需要三步:

  (1)在資料集之中,找一個基準點

  (2)建立兩個數組,分别存儲左邊和右邊的數組

  (3)利用遞歸進行下次比較

    <script type="text/javascript">

        function quickSort(arr){

            if(arr.length<=1){

                return arr;//如果數組隻有一個數,就直接傳回;

            }

            var num = Math.floor(arr.length/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 quickSort(left).concat([numValue],quickSort(right));//遞歸不斷重複比較

        }

        alert(quickSort([32,45,37,16,2,87]));//彈出“2,16,32,37,45,87”

    </script>

本文轉自 全棧web筆記 51CTO部落格,原文連結:http://blog.51cto.com/12864747/1969951,如需轉載請自行聯系原作者

繼續閱讀