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