第一種:
while (result.length < sumLen) {
if (ap < aLen && bp < bLen) {
if(a[ap] > b[bp]){
result.push(b[bp++]);
} else {
result.push(a[ap++]);
}
} else if (!(ap < aLen)){
while(bp < bLen){
result.push(b[bp++]);
}
} else if (!(bp < bLen)){
while(ap < aLen){
result.push(a[ap++]);
}
}
}
return result;
}
第二種:
第三種:
if(x == a.length){
for(var y = l; y < bLen; y++){
list.push(b[y]);
}
}else{
for(var z = x; z < aLen; z++){
list.push(a[z]);
}
}
return list;
}
經過測試2個有序20W長度的數組歸并耗時都在15毫秒以下。
以下有幾條經驗(在大量操作的時候才能體現,平時不需要做這樣的優化。代碼可讀性還是第一原則)
1:數組的concat方法比直接for循環push要慢。
2:for循環比while循環快。
3:var a = b || 3; //這種操作很消耗時間
4: break,continue 在已確定不需要再循環時很耗時。
新聞熱點
疑難解答