基本排序算法的JavaScript实现

来源:互联网 发布:iphone实用软件 编辑:程序博客网 时间:2024/06/08 06:05

基本排序算法的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);
1 0
原创粉丝点击