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

2018-06-23  本文已影响10人  ChasenGao

本文对比了冒泡排序和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() 性能更高。

上一篇 下一篇

猜你喜欢

热点阅读