#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;
}
#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");
}
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("请输入想插入的...