C语言问题:合并两个升序排列的数列

若有两个已按升序排列的数列,数列a:1 7 9 11 13 15 17 19和数列 b :2 4 6 8 10. 现将这两个数列合并插入到c数列中,插入后的数列c 仍按升序排列 要求通过指针完成。

提示: 通过while循环进行合并,执行循环的条件为“i<8&&j<5 其含义为a和b数组同时都存在没有比较过的元素 就要继续循环

在循环体中,将两个书列中当前值小的元素存放到c数组中 循环结束时,有一个数组已经比到最后一个元素

再通过循环(i<8)将数组a中余下的元素存放到c数组之后,或者通过while(j<5)将数组b中余下的元素存放到c数组之后。

希望能根据上面提示帮我写一下程序 我是新手。。。。 谢谢了各位

第1个回答  2009-02-05
#include<stdio.h>
void main()
{
int a[]={1,7,9,11,13,15,17,19};
int b[]={2,4,6,8,10};
int c[13];
int *x=a,*y=b,*z=c;
int i=0,j=0,k=0;
while(i<8&&j<5)
{
    if(x[i]<y[j]) z[k++]=x[i++];/*x[i] 可以用 *(x+i) 替换,其他类同*/
    else z[k++]=y[j++];
}
while(i<8) z[k++]=x[i++];
while(j<5) z[k++]=y[j++];
for(i=0;i<13;i++) printf("%d ", c[i]);
getch();
}本回答被提问者采纳

编写一个函数实现两个按升序排列的顺序表的合并操作,要用C语言编写,能...
return k;\/\/返回值为c的有效长度 } void main(){ int a[]={1,3,5,7,9,10,12,14};int b[]={2,4,6,8,10,11,12,13};int c[100];int i,clen;clen=merge(a,b,c,sizeof(a)\/sizeof(*a),sizeof(b)\/sizeof(*b));for(i=0;i<clen;i++)printf("%d ",c[i]);printf...

c语言中的merge函数
\/\/ 使用自定义比较函数\/\/ 接下来,我们使用默认的升序比较合并两个数组:std::array ai1d = {1, 3, 4, 5}; \/\/ 升序排列std::list lsti1d;for (const auto &i : ai1d) { lsti1d.push_back(i);}std::array ai2d = {2, 6, 7, 8}; std::list lsti2d;for (const auto &i...

c语言用边排序边合并的方法把两个有序数列合并为一个新的有序数列,不...
归并排序:从小到大 \/ void Combine ( int tray1 [], int tray2 [], int result [], int tray1_len, int tray2_len ){ int i, j, k;for ( k = i = j = 0; i < tray1_len && j < tray2_len; ){ if ( tray1 [i] < tray2 [j] ){ result [k ++] = tray1 [...

c语言程序题:输入两个数列,再按从大到小的顺序合并成一个数列并输出
随便写了下,vc6.0能正常编译的,附件中打包了这个软件。代码如下:include <stdio.h>#include <stdlib.h>#include <string.h> int main(){\/\/输入两个数列的大小int a_size = 0, b_size = 0;printf("input A arrrary size:");scanf("%d", &a_size);printf("input B arrary size:"...

将两组有序数列合并成一个新的有序递增数列,用c语言怎么编?
define len1 5 define len2 5 main(){ int a[len1] ={1,3,5,7,9},b[len2]={2,4,6,8,10};int c[len1+len2];int *pa=a,*pb=b,*pc=c,*end;while(pa<a+len1 && pb<b+len2){ if(*pa<*pb)pc++=*pa++;else pc++=*pb++;} if(pa==a+len1)end=pb;else end=...

c语言的问题!!急!!
先对包含了若干元素(元素值由键盘输入)的a,b两个一维数组,分别进行升序排序,再将它们合并成数组C中,要求合并后的元素仍升序排列且无重复值。至少两种方法解决。... 先对包含了若干元素(元素值由键盘输入)的a,b两个一维数组,分别进行升序排序,再将它们合并成数组C中,要求合并后的元素仍升序排列且无重复值。

C语言中 什么是两路合并法?
c语言中没这玩意,你是不是说算法啊, 如果是指合并排序那就是指将两个有序序列合并为一个有序序列,,实现它的方法是:比较两序列中的最小值,输出较小者,然后重复此过程,直到一序列全部输出的,如果另一序列还有元素未输出,则将剩余元素依次输出即可;如下:5 25 55 25 55 10 20 30 输...

解释下面C语言程序(合并顺序表,有顺序表La,Lb)
因为顺序表La、Lb都已经排好序了,那么要将他们合并成有序表放在Lc中,将La和Lb从他们的初始元素进行比较,谁小就将谁放入到Lc中,同时Lc和放入元素的顺序表都指向下一个元素,然后继续循环。最后肯定会有一个顺序表先为空,那么就把不为空的顺序表中的元素直接复制到表Lc中即可。

数据结构的习题(C语言版)
第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。第二个问题...

c语言问题: 输入格式 输入有多组数据。 每组数据两行。 第一行包含一...
1、首先打开visual studio软件,新建一个C语言文件。2、接着在C语言文件的顶部导入库内容。3、接着运用scanf函数接收用户输入的字符串。4、然后我们利用printf函数打印一下用户输入的内容。5、运行程序以后就会弹出如下图所示的CMD界面,我们输入内容就会自动接收到,然后原样输出内容。6、最后如果你接收...

相似回答