2014-01-23 53 views
0

我想按升序將兩個排序數組放入一個數組中,但我並沒有做錯。以升序合併兩個數組

它不會把它們放在一起,只需將兩個數組組合在一起即可。

int [] merged = new int[count1 + count2]; 
int merg1 = 0, merg2 = 0, index = 0; 

while (merg1 < count1 && merg2 < count2) { 
    if (ary1[merg1] <= ary2[merg2]) { 
     merged[index++] = ary1[merg1++]; 
    } 
    else {   
     merged[index++] = ary2[merg2++]; 
    } 

    while (merg1 < count1) { 
     merged[index++] = ary1[merg1++]; 
    } 

    while (merg2 < count2) { 
     merged[index++] = ary2[merg2++]; 
    } 

    for (int i = 0; i < index; i++) { 
     System.out.print(merged[i] + " "); 
    } 

回答

0

什麼是最後兩個while循環?你可能不需要它們。看起來,你排序的前兩個數字,然後while循環複製第一個數組,然後第二個沒有排序。

+0

沒有while循環它會打印出凌亂的整數:( – user3225344

0

您可以分享結果如何查找以下內容嗎?

arry1 = [1,2,6,7] 
arry2 = [2,3,4,8] 

我同意Paradox,沒有兩個額外的while循環,上面的邏輯應該足夠了。例如:

while (merg1 < count1 && merg2 < count2) { 
    if (ary1[merg1] <= ary2[merg2]) { 
     merged[index++] = ary1[merg1++]; 
    } 
    else {   
     merged[index++] = ary2[merg2++]; 
    } 
} 
+0

沒有while循環它會打印出「1 2 2 3 4 6 7」它不包括8 – user3225344

+0

但我現在想通了: )謝謝 – user3225344

0

會不會從

while (merg1 < count1 && merg2 < count2) { 
... 
} 

它來終止錯誤時數字的人去過去它的極限。在while循環之後,我會添加另一個循環,將剩餘數組的其餘部分添加到合併數組中。

0

你可以使用Array工具嗎?例如:

int[] array1 = {1,2,6,7}; 
    int[] array2 = {2,3,4,8}; 
    int[] mergedarray = new int[array1.length + array2.length]; 
    System.arraycopy(array1, 0, mergedarray, 0, array1.length); 
    System.arraycopy(array2, 0, mergedarray, array1.length, array2.length); 
    Arrays.sort(mergedarray); 

這應該給你你正在尋找的結果。