我在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'而不是? –