基本排序算法的JavaScript實現

基本排序算法的JavaScript實現

前言

最近,複習了一下基本的排序算法,以前在校使用C語言實現的,現在由於自己做的是前端開發,所以就動手使用JavaScript實現了一些基本排序算法。

內容

以下是部分基本排序算法的實現:

插入排序(Insertion sort)

insertionSort.js

function insertionSort(arr){
    var i, j, len, tmp;
    for(i = 1, len = arr.length; i < len; i++){
        tmp = arr[i];
        for(j = i - 1; j >= 0; j--){
            if(tmp < arr[j]){
                arr[j + 1] = arr[j];
            }else{
                break;
            }
        }
        arr[j + 1] = tmp;
    }
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
insertionSort(arr);
console.log('After sorting: ', arr);

歸併排序(Merge sort)

mergeSort.js

function mergeSort(arr){
    var k, leftArr, rightArr,
        sorted = [],
        len = arr.length;
    if(len === 1){
        return arr;
    }
    k = Math.floor(len / 2);
    leftArr = mergeSort(arr.slice(0, k));
    rightArr = mergeSort(arr.slice(k, len));
    while(leftArr.length > 0 && rightArr.length > 0){
        if(leftArr[0] <= rightArr[0]){
            sorted.push(leftArr.shift());
        }else{
            sorted.push(rightArr.shift());
        }
    }
    sorted = sorted.concat(leftArr).concat(rightArr);
    return sorted;
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
arr = mergeSort(arr);
console.log('After sorting: ', arr);

快速排序(Quicksort)

quicksort.js

function quicksort(arr, p, r){
    var i, j, pivot, tmp;
    if(p < r){
        for(i = p - 1, j = p, pivot = arr[r]; j < r; j++){
            if(arr[j] <= pivot){
                i++;
                tmp = arr[j];
                arr[j] = arr[i];
                arr[i] = tmp;
            }
        }
        tmp = arr[j];
        arr[j] = arr[i + 1];
        arr[i + 1] = tmp;
        quicksort(arr, p, i);
        quicksort(arr, i + 2, r);
    }
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
quicksort(arr, 0, 5);
console.log('After sorting: ', arr);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章