我正在尝试将两个数组合并为一个。但无法弄清楚为什么数字出来而不是所需数字,这个数字意味着什么。
#include<iostream>
#include<conio.h>
using namespace std;
void MergeArray(int[], int, int[], int,int[]);
void main()
{
int A[50], m, B[50], n, C[100],a, mn;
cout<<"Enter the size of First Array::\n";
cin>>m;
cout<<"Enter the First Array(ASCENDING ORDER)\n";
for(int i=0; i<m ; i++)
cin>>A[i];
cout<<"Enter the size of Second Array::\n";
cin>>n;
cout<<"Enter the Second Array(DESCENDING ORDER) ::\n";
for(int j=0; j<n; j++)
cin>>B[j];
mn=m+n;
MergeArray(A,m,B,n,C);
cout<<"The Array After merging is ::\n";
for(int k=0; k < mn; k++ )
cout<<C[k]<<"\n";
cout<<"Press any key";
cin>>a;
}
void MergeArray(int a[],int M , int b[], int N, int c[] )
{
int x,y,z;
z=0;
for(x=0, y=N-1; x<M && y>=0;)
{
if(a[x]<=b[y])
c[z++]=a[x++];
else if(b[y]<a[x])
c[z++]=b[y--];
}
if(x<M)
{
while(x<M)
c[z++]=a[x++];
}
if(y>0)
{
while(y>=0)
c[z++]=b[y++];
}
getch();
}
答案 0 :(得分:2)
我认为问题就在这里:
if(y>0)
{
while(y>=0)
c[z++]=b[y++]; // <-- y++ instead of y--
}
你应该减少y
,而不是增加它。
答案 1 :(得分:0)
您会看到这个奇怪的数字,因为您打印的是未初始化的数组项。
你不必在这里处理第二个数组的最后一个元素。你还使用y
的增量,但你应该使用减量。
而不是
if(y>0)
{
while(y>=0)
c[z++]=b[y++];
}
你应该使用
if(y>=0)
{
while(y>=0)
c[z++]=b[y--];
}