快排、插入、冒泡排序

快排实现:

    // 快速排序
    function quickSort(arr) {
        // 长度为1表示不可再分割 返回数组
        if (arr.length <= 1) {
            return arr;
        }
        // 基数位置默认为中间
        var p = Math.floor(arr.length / 2);
        var el = arr.splice(p, 1)[0];
        // 左边存储比基数小的 右边存储比基数大的
        var left = [],
            right = [];
        // 遍历数组
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < el) {
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
            }
        }
        // 左-基数-右
        return quickSort(left).concat([el], quickSort(right));
    }
    var arr = [6, 2, 5, 7, 3];
    console.log(quickSort(arr));

 

插入排序:

    function InsertionSort(a) {
        var to = a.length,
            from = 0;
        for (var i = from + 1; i < to; i++) {
            var element = a[i];
            for (var j = i - 1; j >= from; j--) {
                var tmp = a[j];
                var order = (tmp - element);
                if (order > 0) {
                    a[j + 1] = tmp;
                } else {
                    break;
                }
            }
            a[j + 1] = element;
        }
        return a;
    };

 

冒泡:

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

 

posted @ 2017-03-18 01:13  书生小龙  阅读(300)  评论(0编辑  收藏  举报