javascript自带排序和大牛排序的效率对比



 <script>
function rand(m, n) {
//生成一个m、n之间的整数
var i = Math.random();
return Math.round((n - m) * i + m);
}


function getRandomArr(m, n, l) {
//m:生成随即整数的最小值,n:生成随即整数的最大值,l:生成的数组的长度
var resultArr = [];
for (var i = 0; i < l; i++) {
resultArr.push(rand(m, n))
}
return resultArr;
}
function partition(a, st, en) {
var s = st;
var e = en + 1;
var temp = a[s];
while (1) {
while (a[++s] <= temp);
while (a[--e] > temp);
if (s > e)
break;
var tem = a[s];
a[s] = a[e];
a[e] = tem;
}
a[st] = a[e];
a[e] = temp;
return e;
}
function doSort(a, s, e) {
if (s < e) {
var pos = partition(a, s, e);
doSort(a, s, pos - 1);
doSort(a, pos + 1, e);
}
}
Array.prototype.quickSort = function () {
doSort(this, 0, this.length - 1);
}


function sortIntF(a, b) {
return a - b
}
function pk(num) {
//num: 用于排序的数组的元素个数
//生成用于排序的数组
var arr = getRandomArr(1, 999999, num);
//当元素个数小于10000时,执行n次取平均值
var n = Math.ceil(10000 / num);
//生成多个用于排序的数组的拷贝
var quickSortArrs = [];
var sortArrs = [];
for (var i = 0; i < n; i++) {
quickSortArrs.push(arr.slice(0));
sortArrs.push(arr.slice(0));
}
var t1 = new Date();
for (var i = 0; i < n; i++) {
quickSortArrs[i].quickSort();
}
var t2 = new Date();
for (var i = 0; i < n; i++) {
sortArrs[i].sort(sortIntF);
}
var t3 = new Date();
alert("性能比较,对于" + num + "个元素的数组,平均每次排序花费时间如下:\n"
+ "Array.prototype.sort:" + ((t3 - t2) / n) + "ms\n"
+ "quickSort:" + ((t2 - t1) / n) + "ms\n");
}
pk(500);
pk(2000);
pk(30000);
</script >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值