我在as3中创建了mergeSort算法。为了去除数组中的第一个元素,我使用了Array.splice(0,1)。然后我记得Array.split()。我比较了两者。
事实证明split()比拼接(0,1)快得多。具有10个元素的阵列
剪接上
30K测试(0,1):平均的5567毫秒
分裂:平均的1956毫秒,2.8倍更快AS3拆分和拼接(0,1)之间的性能差距?
对于较小的阵列,性能差距也小。上阵列
30K测试带2层的元件
剪接(0,1):平均330毫秒
分裂():平均206毫秒,1.6倍更快
可能有人解释对我?这是否与索引有关?
谢谢。
代码:
public static function sort(a:Array):Array{
if(a.length == 1){
return a;
}
var b = a.splice(a.length/2, a.length);
a = sort(a);
b = sort(b)
var r = new Array;
while(a.length && b.length){
if(a[0] < b[0]){
r.push(a.shift());
}else{
r.push(b.shift());
}
}
while(a.length)
r.push(a.shift());
while(b.length)
r.push(b.shift());
return r
}
没有'split'方法,你的意思是'slice'而不是? –