Javascript算法——快速排序

常見的內部排序算法有:插入排序、 希爾排序選擇排序、冒泡排序、 歸併排序、快速排序、堆排序、基數排序等。這裏主要介紹 快速排序

一圖勝千言:算法

圖片描述

1. 算法描述

快速排序因爲排序效率在同爲O(N*logN)的幾種排序方法中效率較高,所以常常被採用,再加上快速排序思想----分治法也確實實用。快速排序是一種既不浪費空間又能夠快一點的排序算法。segmentfault

2. 算法步驟

  • 先從數列中取出一個數做爲「基準」。
  • 分區過程:將比這個「基準」大的數全放到「基準」的右邊,小於或等於「基準」的數全放到「基準」的左邊。
  • 再對左右區間重複第二步,直到各區間只有一個數。

圖片描述

3. 算法實現

var quickSort = function(arr) {
    if (arr.length <= 1) { return arr; }
    var pivotIndex = Math.floor(arr.length / 2);   //基準位置(理論上可任意選取)
    var pivot = arr.splice(pivotIndex, 1)[0];  //基準數
    var left = [];
    var right = [];
    for (var i = 0; i < arr.length; i++){
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }
    return quickSort(left).concat([pivot], quickSort(right));  //連接左數組、基準數構成的數組、右數組
};
相關文章
相關標籤/搜索