C语言编程:编写程序将两个有序数组A、B合并成另一个有序的数组C,设为升序。

如题所述

#include<stdio.h>

voidmain()

{

inta[10],b[10],c[20],i,ia,ib,ic;

printf("pleaseinputthefirstarray\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

scanf("%d",&b[i]);

printf("\n");

ia=0;ib=0;ic=0;

while(ia<10&&ib<10)

{

if(a[ia]<b[ib])

{

c[ic]=a[ia];

ia++;

}

else{

c[ic]=b[ib];

ib++;

}

ic++;

}

while(ia<10)

{

c[ic]=a[ia];

ia++;

ic++;

}

while(ib<10)

{

c[ic]=b[ib];

ib++;

ic++;

}

for(i=0;i<20;i++)

{

printf("%5d",c[i]);}

}

扩展资料

C语言归并排序

#include<stdio.h>

#defineLEN8

inta[LEN]={5,2,4,7,1,3,2,6};

inttempa[LEN];

voidmerge(inta[],inttempa[],intleft,intright,intrightend)

{

inti,temp;

intleftend=right-1;

intnum=rightend-left+1;

temp=left;

while(left<=leftend&&right<=rightend)

{

if(a[left]<a[right])

{

tempa[temp++]=a[left++];

}

else

{

tempa[temp++]=a[right++];

}

}

while(left<=leftend)

{

tempa[temp++]=a[left++];

}

while(right<=rightend)

{

tempa[temp++]=a[right++];

}

for(i=0;i<num;i++,rightend--)

{

a[rightend]=tempa[rightend];

}

}

voidsort(inta[],inttempa[],intleft,intright)

{

intmid;

if(left<right)

{

mid=(left+right)/2;

sort(a,tempa,left,mid);

sort(a,tempa,mid+1,right);

merge(a,tempa,left,mid+1,right);

}

}

intmain()

{

sort(a,tempa,0,7);

for(inti=0;i<LEN;++i)

{

printf("%d,",a[i]);

}

return0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-05-30

#include<stdio.h>
#define M 4       //数组a的元素个数
#define N 3       //数组b的元素个数

void paixu(int a[],int w)
{
    int i,j;
int t;    
    for(j=1;j<w;j++)         
        for(i=0;i<j;i++)        
            if(a[i]>a[j])          
            {
                t=a[i];a[i]=a[j];a[j]=t;
            }
}


void main()
{
    int i,j=0,n=M;
int a[M],b[N],c[M+N];
printf("请输入数组a[%d]\n",M);
for(i=0;i<M;i++) scanf("%d",&a[i]);  
paixu(a,M);
printf("请输入数组b[%d]\n",N);
    for(i=0;i<N;i++) scanf("%d",&b[i]);
for(i=0;i<M;i++)
c[i]=a[i];
paixu(c,M);
for(j=0;j<N;j++)
{
c[M+j]=b[j];
paixu(c,n++);
}
paixu(c,M+N);
printf("插入数组后,排序:\n");
for(i=0;i<M+N;i++)
printf("%d  ",c[i]);
printf("\n");

}

本回答被提问者采纳
第2个回答  2013-11-30
将AB的数据合并的一个数组中,排序,输出
1、for( i = 1 to strlen(a) ) input->array[i];
2、for( i = strlen(a)+1 to strlen(a)+strlen(b) ) input->array[i];
3、sort(array[1] to array[end] );
4、output<-array;
伪代码就是这些,根据题意自己写一下就行了,你叙述的题意不清楚,没法写代码

C语言编程:编写程序将两个有序数组A、B合并成另一个有序的数组C,设为...
printf("%5d",c[i]);} }

如何用C语言编程将两个有序数组a,b合并成一个数组c
int i = j = k = 0;\/\/循环比较,将小的插入到C数组中 while ( i < 3 && j < 3) { if (a [i] < b [j]) c[k++] = a[i++];else c[k++] = b[j++];} \/\/处理其中一个数组剩下 while (i < 3) c[k++] = a[i++];while( j < 3) c[k++] = b[j++]...

用C语言编写算法实现将两个递增顺序表合并为一个递增顺序表
1.最容易的办法就是把两个表保存在一个新的表里,然后冒泡排序(就是这么暴力。)2.不过这个问题用指针实现最方便了。两个指针分别指着两个递增表:比较指针所指的值大小,将小的那个保存在新的表里,然后将小的那个指针往前走一步。再比较,再保存,再走...直到其中一个表走完,把另一个表剩...

将两个有序线性表合并成一个有序线性表,用C语言 在线急等!!!
printf("输入第二个数组元素个数:");scanf("%d",&n2);printf("输入%d个升序元素(空格隔开):",n2);for(i=0;i<n2;i++)scanf("%d",&b[i]);n3=merge(a,n1,b,n2,s); \/\/a和b数组的元素合并到s数组里去(并消除重复元素),并返回合并后数组的元素个数 printf("合并后元素数组...

c语言中的merge函数
在C语言中,merge函数是一个重要的工具,它被设计用于对已排序的序列进行合并操作。该函数不仅限于合并,实际上涉及到对两个有序的列表进行整合,以形成一个新的有序列表。以下是一个使用merge函数的简单示例:在C++标准库中,merge()函数允许我们合并两个有序的数组或列表,通过自定义或默认的比较规则...

一道典型的编程题:将两个有序数组合并到有序第三个数组中,我用C语言...
a:Tarr1=(1,2,3,4,11); \/\/定义常量数组 b:Tarr1=(6,7,8,9,10);var c:Tarr2;i,j,k:integer;begin i:=1;k:=1;j:=1;while((i<=5) and (k<=5)) do \/\/ j 不需再行判断 begin if(a[i]<=b[k]) then begin c[j]:=a[i];inc(i);inc(j);end else begin...

C语言 两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第...
int i; int j=0; for(i=0;i<A.length;i++) { if(B.data[j]<A.data[i]) { InsElem(A,B.data[j],i+1);\/\/这里j++;if(j >= B.length)\/\/这里,不能让j越界break; } } printf("合并后线性表A:...

C语言 求两个有序顺序表的并集
int MergeArray(int* arr1, int len1, int* arr2, int len2, int** arrRst){ arrRst = new int[len1+len2];int* arrRstt = *arrRst;if (*arrRst != 0){ int *p = arr1;int i = 0;int i1 = 0,i2 = 0;while(i1<len1 || i2<len2){ p = arr1;while (*p<=*...

C语言一维整型数组的输入输出,排序和归并函数急急急~~~
合并两个已排序数组为一个有序数组。最后,输出归并后的数组c,结果为1、2、2、3、3、4、4、5、5、6、7、8、8、9、9。程序结束时,使用printf函数输出结果。以上程序实现了对一维整型数组的输入、排序和归并功能,通过使用基本的C语言语法和逻辑判断,展示了数组操作的基础知识。

C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
{ int i, j, t, k;\/\/定义循环变量 const int n = 10;\/\/定义数组元素个数 int a[n], b[n + 1];\/\/定义两个数组 printf("您喜欢的有序数组:\\n");\/\/输入数组序列文字提 for (i = 0; i < n; i++){ scanf("%d", &a[i]);\/\/循环输入数组元素 } printf("请输入想插入的...

相似回答