c语言编程将元素有序且相异的两个一维数组(从小到大)归并成一个有序的一维数组
展开全部
如果知道元素大小,就直接申明一个两个加起来的大小数组,譬如第一个数组是m个,第二个数组是n个,那么建立一个数组(假设是int型) int point3[m+n];如果不知道,就用vector。我们假设知道的;
for(int i=0; i<m+n; )
{
for(int j=0; j<m; )
{
for(int k=0; k<n)
{
if(point1[m]<point2[n]) //如果数组1的第m个较小
{
point3[i]=point1[m];
m++;
i++;
}
else //如果数组2的第n个数字较小
{
point3[i]=point2[n];
n++
i++;
}
}
}
//如果怕i超出
if( i==(m+n) )
break;
}//得到的point3即为有序的了。
for(int i=0; i<m+n; )
{
for(int j=0; j<m; )
{
for(int k=0; k<n)
{
if(point1[m]<point2[n]) //如果数组1的第m个较小
{
point3[i]=point1[m];
m++;
i++;
}
else //如果数组2的第n个数字较小
{
point3[i]=point2[n];
n++
i++;
}
}
}
//如果怕i超出
if( i==(m+n) )
break;
}//得到的point3即为有序的了。
展开全部
注意思维 , 先将两个合并,在排序
#include<stdio.h>
main()
{
int a[3]={1,2,3},b[2]={5,6},c[3+2],t,i,j;
for(i=0;i<3+2;i++)
if(i<3) c[i]=a[i];
else
c[i]=b[i-3];
//排序
for(i=4;i>0;i--)
for(j=0;j<i;j++)
if(c[j]>c[j+1])
{t=c[j];c[j]=c[j+1];c[j+1]=t;}
//输出c[5]
for(i=0;i<3+2;i++)
printf("%8d",c[i]);
putchar('\n');
}
#include<stdio.h>
main()
{
int a[3]={1,2,3},b[2]={5,6},c[3+2],t,i,j;
for(i=0;i<3+2;i++)
if(i<3) c[i]=a[i];
else
c[i]=b[i-3];
//排序
for(i=4;i>0;i--)
for(j=0;j<i;j++)
if(c[j]>c[j+1])
{t=c[j];c[j]=c[j+1];c[j+1]=t;}
//输出c[5]
for(i=0;i<3+2;i++)
printf("%8d",c[i]);
putchar('\n');
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询