【JavaScript算法】---快速排序法(轉載自個人老師 Alley-巷子)

1、快速排序法概念數組

  咱們將一個雜亂無章的數組進行一個快速排序,能夠先從一個數組中取一箇中間值,將一個數組一分爲2,左邊的數組跟中間值進行比較,小的放在左邊,大的放在右邊。比較完畢後再次取中間值,再次比較一次類推
 
2、思路
 
  一、取的中間值,以及中間值的下標
 
  二、建立一個left空數組,存放小於中間值的數據
 
  三、建立一個right空數組,存放大於中間值的數據
 
  四、遞歸的終止條件,若是數組的長度等於1的時候就返回數組
 
  五、循環將數組一分爲二
 
  六、遞歸

 

 
3、代碼
複製代碼
function quicksort(arr){
    if(arr.length<2){
        return arr;
    }

    var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2;
    var mid = arr[midIndex];

    var left  = [];
    var right = [];
    
    for(var i=0;i<arr.length;i++){
        if(i != midIndex && arr[i] <= mid){
            left.push(arr[i]);
        }

        if(i != midIndex && arr[i] > mid){
            right.push(arr[i])
        }
    }

    return quicksort(left).concat(mid).concat(quicksort(right))
}
複製代碼
相關文章
相關標籤/搜索