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