基础排序算法

排序算法

交换数组元素

    function swap(arr, index1, index2) {
        var tmp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = tmp;
    }

冒泡排序

    function bubbleSort(arr) {
        if(arr.length <= 1) {return arr}
        for(var i = arr.length; i >= 2; i--) {
            for(var j = 0; j <= i-1; j++) {
                if(arr[j] > arr[j+1]) {
                    swap(arr, j, j+1);
                }
            }
        }
        return arr;
    }

选择排序

    function selectSort(arr) {
        if(arr.length <= 1) {return arr}
        var min;
        for(var i = 0; i < arr.length-1; i++) {
            min = i;
            for(var j = i+1; j < arr.length; j++) {
                if(arr[min] < arr[j]) {
                    min = j
                }
                swap(arr, i, min)
            }
        }
        return arr;
    }

插入排序

    function insertSort(arr) {
        if(arr.length <= 1) {return arr}
        var tmp, inner;
        for(var outer = 1; outer < arr.length; outer++) {
            temp = arr[outer];
            inner = outer;
            while(inner > 0 && (arr[inner-1] >= temp)) {
                arr[inner] = arr[inner-1];
                --inner;
            }
            arr[inner] = temp;
        } 
        return arr;
    }

快速排序

    function qSort(arr) {
        if(arr.length == 0) {
            return [];
        }
        var lesser = [];
        var greater = [];
        var pivot = arr[0];
        for(var i = 0; i < arr.length; i++) {
            if(arr[i] < pivot) {
                lesser.push(arr[i])
            } else {
                greater.push(arr[i])
            }
        }
        return qSort(lesser).concat(pivot,qSort(greater));
    }
原文地址:https://www.cnblogs.com/yfife/p/8595788.html