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;
}
第二種:
代碼如下:
/**魯軍*/
function merge(arr1, arr2){
var i = 0; if(i==len1){ for(k=j; k if(j==len2){ } return arr; 第三種: for(var i = 0; i < bLen; i++){ if(x == a.length){ return list; 經(jīng)過測(cè)試2個(gè)有序20W長(zhǎng)度的數(shù)組歸并耗時(shí)都在15毫秒以下。 以下有幾條經(jīng)驗(yàn)(在大量操作的時(shí)候才能體現(xiàn),平時(shí)不需要做這樣的優(yōu)化。代碼可讀性還是第一原則) 1:數(shù)組的concat方法比直接for循環(huán)push要慢。 2:for循環(huán)比while循環(huán)快。 3:var a = b || 3; //這種操作很消耗時(shí)間 4: break,continue 在已確定不需要再循環(huán)時(shí)很耗時(shí)。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
var j = 0;
var c = 0;
var k;
var len1 = arr1.length;
var len2 = arr2.length;
var arr = [];
for(;i
arr.push( arr2[j] );
j++;
}else{
arr.push( arr1[i] );
i++;
}
//if(i==len1 || j==len2){
// break;
//}
}
//arr = arr.concat(arr2.slice(j));
}
}
//arr = arr.concat(arr1.slice(i))
for(k=i; k
}
}
代碼如下:
/*金銳的*/
function merge(a,b){
var x = 0;
var l = 0;
var list = [];
var aLen = a.length;
var bLen = b.length;
for(var j = x; j < aLen; j++){
if(b[i] < a[j]){
list.push(b[i]);
l = i;
break;
}else{
list.push(a[j]);
x++;
}
}
}
for(var y = l; y < bLen; y++){
list.push(b[y]);
}
}else{
for(var z = x; z < aLen; z++){
list.push(a[z]);
}
}
}