2013-10-17 67 views
0

我有一個簡單的javascript問題我真的可以使用一些幫助! 我想弄清楚如何比較數組之間的元素,並在下一個循環中再次比較大的元素。 說我們有陣列A和陣列Bjavascript:比較兩個陣列互相挑戰

if(A[i] < B[i]) 
//do stuff 

else if(B[i] < A[i]) 
//do stuff 

我的問題是,經過比較,我在他們的指數的元素,我想更大的元素添加到下一個循環週期進行比較。

所以,如果A = [5,7,4'-] 和B = [2,8,5]

在第一回路5進行比較,如圖2所示,圖2是更小的,以便與東西它發生。在下一個循環週期中,我想將5與8進行比較,並且對於現在發生的情況與5進行比較。接下來的8與7進行比較,東西與7進行比較。接下來的8與4進行比較,東西與4進行比較。對於如何實現這一點沒有任何線索,您的意見非常感謝。

+0

您是在尋找[合併算法](http://en.wikipedia.org/wiki/Merge_algorithm)? – Bergi

回答

1

定義兩個迭代變量:aIdx,bIdx

迭代都基於施加的條件陣列。至少有一個數組在本次迭代中被完全遍歷。

現在迭代剩餘的(A或B)數組。

var aIdx = 0; 
var bIdx = 0; 
// Iterate both array based on condition 
while((aIdx < A.length) && (bIdx < B.length)) { 
    if(A[aIdx] < B[bIdx]) { 
     ++aIdx; 
     // do stuff 
    } else { 
     ++bIdx; 
     // do stuff 
    } 
} 

// At this point, at least one array is completely traversed, now iterate the remaining array 
while(aIdx < A.length) { 
    ++aIdx; 
    // do stuff 
} 
while (bIdx < B.length) { 
    ++bIdx; 
    // do stuff 
} 
+0

你先生可能會做點什麼!我會檢查這個! – bala