2017-04-11 91 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