C语言中数组的合并

如题所述

//两个数组合并,参考代码:
#include "stdio.h"
int d=0; //用于记录数组c的大小,和数组c的输出类的一些操作
void main()
{
int a[50],b[50],c[100];
int i,j,k; //i表示a数组的大小 j表示b数组的大小 k用于数组的输出
printf("数组a的输入,输入一个数,表明你要输入多少个数到数组a中\n");
scanf("%d",&i);
for(k=0;k<i;k++)
scanf("%d",&a[k]);
printf("数组b的输入,输入一个数,表明你要输入多少个数到数组b中\n");
scanf("%d",&j);
for(k=0;k<j;k++)
scanf("%d",&b[k]);
void px(int *p,int n); //声明 排序 冒泡法
px(a,i); //调用
px(b,j); //调用
void prin(int *p,int n); //声明 数组的输出函数
prin(a,i);
prin(b,j);
void hb(int *o,int *p,int *q,int m,int n); //声明 两个数组的合并函数 前提:这俩个数组必须是排好序的
hb(c,a,b,i,j);
prin(c,d);
}

void px(int *p,int n) //自定义函数 排序 冒泡法
{int i,j,t,leap;
for(i=0;i<n-1;i++) //外层循环n-1次,一次循环沉淀一个数
{
leap=0; //leap作为标记,是否两数相换
for(j=0;j<n-i-1;j++) //内循环n-i-1次
{
if(p[j]>p[j+1]) //比较两个数
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t; //来两个数交换
leap=1; //交换了,标记leap=1
}
}
if(leap==0) break; //经历了一个内for循环,leap==0的话,表明排序成功了,不需要接下来在排序了。
}
}

void prin(int *p,int n) //自定义函数 数组输出函数
{
int k,sum=0;
for(k=0;k<n;k++)
{
printf("%d ",p[k]);
sum++;
if(sum%10==0) printf("\n");
}
printf("\n");
}

void hb(int *o,int *p,int *q,int m,int n) //m为p指向数组的大小 n为q指向数组的大小 指针o指向合并的数组
{
int i=0,j=0,k; //i为p指向数组的大小 j为q指向数组的大小
while(1)
{
if(p[i]<q[j])
{
o[d]=p[i];
i++;
d++;
}
else
{
o[d]=q[j];
j++;
d++;
}
if(i==m||j==n) break;
}
if(i==m)
{
for(k=j;k<n;k++)
{
o[d]=q[k];
d++;
}
}
if(j==n)
{
for(k=i;k<m;k++)
{
o[d]=p[k];
d++;
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-23
#include <stdio.h>

void DisplayArray(int *pArray, int nLen)
{
for (int i = 0; i < nLen; ++i)
{
printf("%d ", pArray[i]);
}
}
void MergeArray(int *pArray1, int nLen1, int *pArray2, int nLen2, int *pArray)
{
int i, j, n;

i = j = n = 0;
while (i < nLen1 && j < nLen2)
{
if (pArray1[i] < pArray2[j])
{
pArray[n++] = pArray1[i++];
}
else if (pArray1[i] > pArray2[j])
{
pArray[n++] = pArray2[j++];
}
else
{
pArray[n++] = pArray2[j++];
++i;
}
}

if (i == nLen1)
{
while (j < nLen2)
pArray[n++] = pArray2[j++];
}
else
{
while (i < nLen1)
pArray[n++] = pArray1[i++];
}
}

int main()
{
int array1[] = {3,6,9,11};
int array2[] = {1,2,8,45,89};
int array3[8];
MergeArray(array1, 4, array2, 5, array3);
printf("Merge Array:\n");
DisplayArray(array3, 9);

return 1;
}本回答被提问者和网友采纳
相似回答