美文网首页
JS中的冒泡排序和性能对比

JS中的冒泡排序和性能对比

作者: ChasenGao | 来源:发表于2018-06-23 14:58 被阅读10次

    本文对比了冒泡排序和sort方法的性能;

    1、最直观的冒泡排序:

    function puppleSort1(arr){
        let timer1 = new Date().getTime();
        for (i = 0;i<arr.length;i++) {
            for (k = i +1;k<arr.length;k++) {
                let temp;
                if (arr[i]<arr[k]) {
                    temp = arr[i];
                    arr[i] = arr[k];
                    arr[k] = temp;
                }
            }
        };
        let timer2 = new Date().getTime();
        console.log(timer2 - timer1);
        return arr;
    }
    

    在处理一个随机生成的数组时(数组内有1272个数值元素),性能如下:


    image.png

    用时为4毫秒;

    2、完善后的冒泡排序:

    function puppleSort(arr) {
        let timer1 = new Date().getTime();
        let _arr = [];
        for(l = 0; l < arr.length; l++) {
            if(arr[l] instanceof Array) {
                console.warn("方法puppleSort()不支持多维数组");
                return "";
            } else {
                break;
            }
        }
        for(i in arr) {
            _arr.push(arr[i]);
        };
        if(arguments.length != 1) {
            console.warn("方法puppleSort()只能有一个参数");
            return "";
        } else {
            if(arguments[0].toString().indexOf("object") == -1) {
                for(j = 0; j < _arr.length; j++) {
                    for(k = j + 1; k < _arr.length; k++) {
                        let temp;
                        if(_arr[j] < _arr[k]) {
                            temp = _arr[j];
                            _arr[j] = _arr[k];
                            _arr[k] = temp;
                        }
    
                    }
                }
            }
            if(arguments[0].toString().indexOf("object") != -1) {
                console.warn("方法puppleSort()的参数必须是数组");
                return "";
            }
        }
        let timer2 = new Date().getTime();
        console.log((timer2 - timer1) + " ms");
        return _arr;
    };
    

    处理同样数组性能如下:


    image.png

    3、Sort方法

    function onlySort(arr){
        let timer1 = new Date().getTime();
        var _arr = arr.sort();
        let timer2 = new Date().getTime();
        console.log((timer2 - timer1) + " ms");
        return _arr;
    }
    

    处理同样数组性能如下:


    image.png

    对比之下,还是sort() 性能更高。

    相关文章

      网友评论

          本文标题:JS中的冒泡排序和性能对比

          本文链接:https://www.haomeiwen.com/subject/synryftx.html