冒泡排序算法的实现

冒泡排序算法 一

/**冒泡排序算法 一
   本算法效率优于 下面的 第二种算法
**/
function sort(){
    var arr = [];
    var a = 0;
    //产生测试数据
    while(a < 50000){
        arr[a] = Math.ceil(Math.random() * 10000);
        a++;
    }
    //获取数组长度
    var arrlen = arr.length;
    //用于在交换中临时存储数据
    var tmep;
    var st = new Date().getTime();
    for(var i = 0;i < arrlen - 1;i++){
    //让其参与比较个数为 arrlen - 1 - i,
    //因为 arrlen - 1 - i 以外数据已经是比较过了
        for(var j = 0;j < arrlen - 1 - i;j++){
            //在内层循环中对 j 和 j + 1 个数据进行比较
            if(arr[j] > arr[j+1]){
            //进行数据交换
               tmep = arr[j];
               arr[j] = arr[j+1];
               arr[j+1] = tmep;
            }
        }
    }
    var su = new Date().getTime();
    console.log(su - st);
    console.log(st);
    console.log(su);
    console.log(arr.join(","));
}
冒泡排序算法 二

/**冒泡排序算法 二
**/
function sort(){
    var arr = [];
    var a = 0;
    //产生测试数据
    while(a < 50000){
        arr[a] = Math.ceil(Math.random() * 10000);
        a++;
    }
    //获取数组长度
    var arrlen = arr.length;
    //用于在交换中临时存储数据
    var tmep;
    var st = new Date().getTime();
    for(var i = arrlen;i >= 2;--i){
    //让其参与比较个数为  arrlen - 1,
        for(var j = 0;j < arrlen - 1;++j){
            //在内层循环中对 j 和 j + 1 个数据进行比较
            if(arr[j] > arr[j+1]){
            //进行数据交换
               tmep = arr[j];
               arr[j] = arr[j+1];
               arr[j+1] = tmep;
            }
        }
    }
    var su = new Date().getTime();
    console.log(su - st);
    console.log(st);
    console.log(su);
    console.log(arr.join(","));
}
两张实现的比较

两张算法在同样数量 50000 下的运行情况比较

实现 1 的运行结果:

两个时间搓之差:3887
开始比较前的时间戳:1471943372402
比较完成后的时间戳:1471943376289

实现 2 的运行情况:

两个时间搓之差:4271
开始比较前的时间戳:1471943691093
<pre name="code" class="plain">比较完成后的时间戳:1471943695364
 
 

从上面的数据总能看出 第一种实现方式的效率明显的高于 第二种。

猜你喜欢

转载自blog.csdn.net/wbxx727124/article/details/52292662