2017-04-11 95 views
1

我的程序有點問題,我無法解決問題。基本上,有兩個數組按升序排序,我必須將它們合併爲一個。已訂購合併問題

我期望的輸出是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 

但它是:

1 2 3 4 5 6 7 8 9 10 11 12 13 0 

我在做什麼錯,在輸出的最後一個值是不是14?我認爲解決這個問題的辦法很簡單,但我無法弄清楚。

下面的代碼:

#include<iostream> 
#include<cstdlib> 
using namespace std; 

int main(){ 

int arrA[]={1,3,5,7,9,11,13}; 
int arrB[]={2,4,6,8,10,12,14}; 
int arrC[sizeof(arrA)/sizeof(int)+sizeof(arrB)/sizeof(int)]; 

int sizeA=sizeof(arrA)/sizeof(int); 
int sizeB=sizeof(arrB)/sizeof(int); 
int sizeC=sizeof(arrC)/sizeof(int); 

for (int i=0;i<sizeA;){ 
    for (int j=0;j<sizeB;){ 
     if (arrA[i]<=arrB[j]){ 
      arrC[i+j]=arrA[i++]; 
     } 
     else{ 
      arrC[i+j]=arrB[j++]; 
     } 
    } 
} 

for (int i=0; i<sizeC; i++){ 
    cout << arrC[i] << " "; 
} 
return 0; 
} 

回答

3

其實你從來沒有在那裏你將值分配給ARRC [13]得到的點,這是過去14元。在你的外循環i == 6的最後一次迭代中,內循環也是一樣的。所以你結束時,我+ j等於12.

+0

所以我必須改變循環。感謝幫助 ;) – Ensz