美文网首页
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中的冒泡排序和性能对比

    本文对比了冒泡排序和sort方法的性能; 1、最直观的冒泡排序: 在处理一个随机生成的数组时(数组内有1272个数...

  • 面试算法:冒泡排序

    冒泡排序性能 性能:稳定 最好:O(n) 最坏:O(n*n) 冒泡排序常规版

  • iOS 面试必须会的---亲身经历+师兄面试后总结

    1.冒泡排序 冒泡排序,必须掌握 除了冒泡排序外还有 插入排序,对比排序,这里举例冒泡排序 2.单例 .h文件 ....

  • JS算法笔记 - 排序

    冒泡排序 改进冒泡排序 选择排序 快速排序 在JS中相对较快 插入排序 改进:二分插入排序 希尔排序 动态定义间隔...

  • 冒泡排序、插入排序、选择排序

    三种算法对比: 冒泡排序 插入排序 选择排序 测试 提升 冒泡排序和插入排序的时间复杂度都是 O(n2),都是原地...

  • js中数组的排序方法

    js里最常见的排序方法有两种,冒泡排序和选择排序。 (1)冒泡排序 原理是数组中两两元素进行比较,如果第一个比第二...

  • JavaScript-排序算法

    冒泡排序 冒泡排序是所有排序中最简单的,但从性能和计算时间来看,也是最差的。 看到以上代码,它的大致思路是这样的,...

  • JS排序

    js中的冒泡排序: 排序结果: 超有用的链接,没事再看看吧 根据对象的某一属性排序 排序结果:

  • js排序-随便写写

    排序随便写写 记录一下js排序插入排序 冒泡排序

  • 基本排序整理

    冒泡:相邻元素对比,从数组后方开始两两对比 冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换...

网友评论

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

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