基本排序算法的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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值