繁体   English   中英

合并两个数组而不使用数组排序

[英]Merge two arrays without sorting using array

我试图合并到数组而不使用指针方法进行排序(先添加然后再添加),但是它只是打印第一个数组,然后是垃圾值。 我想做的就是将2个数组组合成一个大数组。 无需排序(至少现在)。

void getarray(int*,int);
int merge(int*,int*,int,int,int*);
main()
{
int a[10],b[10],c[20];
int i,j,n,m,size;
clrscr();
printf("Enter no. of elements in FIRST array: ");
scanf("%d",&n);
getarray(a,n);
printf("Enter no. of elements in SECOND array: ");
scanf("%d",&m);
getarray(b,m);
merge(a,b,n,m,c);
printf("\nMerged Array: \n");
for(i=0;i<n+m;i++)
{
    printf("\t%d\t",c[i]);
}
getch();
return 0;
}
void getarray(int *x, int y)
{
int i;
for(i=0;i<y;i++)
{
    scanf("%d",x+i);
}
}

int merge(int *a, int *b,int n,int m,int *c)
{
   int i,j;
for(i=0;i<n;i++)
{
    *(c+i) = *(a+i);
}
   for(j=i;j<i+m;j++)
   {
    *(c+j) = *(b+j);
   }
}

或者,您可以使用(假设c足够大):

void merge(int *a, int *b,int n,int m,int *c) {
  memcpy(c,   a, sizeof(int)*n);
  memcpy(c+n, b, sizeof(int)*m);
}

您将需要包含string.h

int merge(int *a, int *b,int n,int m,int *c)
{
   int i,j;
for(i=0;i<n;i++)
{
    *(c+i) = *(a+i);
}
   for(j=0;j<m;j++)
   {
    *(c+n+j) = *(b+j);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM