zoukankan      html  css  js  c++  java
  • JavaScript常见排序算法

    1.冒泡排序

    function bubble_sort(arr) {
        if (arr.length <= 1) {
            return arr;
        }
        var len = arr.length;
        for (var i = 0; i < len; i++) {
            for (var j = 0; j < len - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
    var arr = [3, 5, 8, 1, 2, 4, 7, 9];
    var sort = bubble_sort(arr);
    console.log(sort);

    2.快速排序

    function quick_sort(arr) {
        if (arr.length <= 1)
            return arr;
        var pivot = Math.floor((arr.length - 1) / 2),    //Math.fllor()返回一个小于或者等于给定数字的最大整数
            pivotValue = arr[pivot],
            left = [],
            right = [];
        arr = arr.slice(0, pivot).concat(arr.slice(pivot + 1));  //concat()连接两个数组返回一个新的数组 slice()返回包含提取元素的新数组
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < pivotValue) {
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
            }
        }
        return [].concat(quick_sort(left), [pivotValue], quick_sort(right));
    }
    var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
    var sort = quick_sort(arr);
    console.log(sort);

    3.合并排序

    function merge(left, right) {
        var result = [];
        while (left.length && right.length) {
            if (left[0] < right[0]) {
                result.push(left.shift());
            } else {
                result.push(right.shift());
            }
        }
        return result.concat(left).concat(right);
    }
    
    function merge_sort(arr) {
        if (arr.length <= 1) return arr;
        var mid = Math.floor(arr.length / 2),
            left = arr.slice(0, mid),
            right = arr.slice(mid);
        return merge(merge_sort(left), merge_sort(right));
    }
    
    var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
    var sort = merge_sort(arr);
    console.log(sort);

    4.选择排序

    function selection_sort(arr) {
        for (var i = 0; i < arr.length; i++) {
            var min = i;
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    min = j;
                }
            }
            if (min != i) {
                var temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
        return arr;
    }
    
    var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
    var sort = selection_sort(arr);
    console.log(sort);

    5.插入排序

    function insertion_sort(arr) {
        for (var i = 0; i < arr.length; i++) {
            var j = i - 1,
                temp = arr[i];
            while (j >= 0 && arr[j] > temp) {
                arr[j + 1] = arr[j];
                arr[j] = temp;
                j--;
            }
        }
        return arr;
    }
    
    var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
    var sort = insertion_sort(arr);
    console.log(sort);
  • 相关阅读:
    shell 指令
    在Linux下搭建nRF51822的开发烧写环境(makefile版)
    宏定义。字符串拼接和字符串整形转字符串
    django-debug-toolbar安装过程中的error
    pipenv
    Docker 命令大全
    MySQL性能优化
    docker操作
    使用网易源解决docker下载镜像文件慢的问题
    w3school/jQuery 教程
  • 原文地址:https://www.cnblogs.com/yuanchao-blog/p/10501519.html
Copyright © 2011-2022 走看看