冒泡排序算法 一
/**冒泡排序算法 一 本算法效率优于 下面的 第二种算法 **/ 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
从上面的数据总能看出 第一种实现方式的效率明显的高于 第二种。