有两个一维数组a和b(元素不超过一百个)中的元素已经按升序排列,用c

++编写一个函数将两个数组中的元素合并到另一个数组c中,期中元素仍按升序排列

C++源代码:


#include "iostream"


using namespace std;


void merge(int a[], int la, int b[], int lb, int c[])

{

int i, j, k=0;


for(i=0, j=0; i<la && j<lb;) 

{

if(a[i] < b[j])

{

c[k++] = a[i++];

}

else {

c[k++] = b[j++];

}

}

while(i < la) 

{

c[k++] = a[i++];

}

while(j < lb) 

{

c[k++] = b[j++];

}

}


void main()

{

int a[] = {1, 2, 2, 3, 4, 5};

int b[] = {2, 3, 5, 5, 7};

int la = 6;

int lb = 5;

int lc = la + lb;

int c[11];


merge(a, la, b, lb, c);


for(int i=0; i<lc; i++)

cout<<c[i]<<"\t";

}


运行测试:

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-24
#include <iostream>
using namespace std;
#include <string.h>
string add(string s1,string s2)
{
string str;
int i=0,j=0;
for(int k=0;k<s1.length()+s2.length();k++)
{
if(i>=s1.length())
{
str+=s2.substr(j,s2.length()-j);break;
}
else if(j>=s2.length())
{
str+=s1.substr(i,s1.length()-i);break;
}
else
{
if(s1[i]<=s2[j])
{
str+=s1[i++];
}
else str+=s2[j++];
}
}
return str;
}
int main()
{
string s1="145",s2="2678";
//cout<<s2.substr(0,s2.length()-0);
cout<<add(s1,s2);
return 0;
}

有两个N(1≤N≤100)个元素的数组A和B,其中A来自输入,将其"赋值"给B...
\/>的逻辑结构是一个数据元素,它可以用来表示数量之间的关系,在这个集合中的数据元素之间的两个元素的逻辑结构的逻辑描述,定义了一组:首先,收集通常由R.的数据元素时,通常是由D,D,它反映之前和之后的数据元素,数据结构之间的关系可以表示为=(四)其中,B表示的数据结构反映在D中的每个数据元素,一般的元组。在数据...

...个已按照升序排好的两个数组a和b中的顺序排列到c中去.
int *b, int an, int bn);int main(){ int a[10] = {11, 21, 31, 41, 51, 61, 71, 81, 91, 110}; int b[5] = {1, 7, 88, 89, 342}; fun(a, b, 10, 5); return

c语言的问题!!急!!
t=array[k];array[k]=array[i];array[i]=t;}}filter(int fj,int c) \/\/筛选算法{int i,j,x;i=fj;j=2*i;x=array[i];while(j<=c){ if(j<c&&array[j]>array[j+1]) j++; \/\/将其左孩子和右孩进行比较,得到最大者的下标. if(x>array[j]) \/\/选出最大子节点后和父节点进行比较. {...

编写一个函数实现两个按升序排列的顺序表的合并操作,要用C语言编写,能...
\/*采用数组实现 int merge(int* a,int* b,int*c,int alen,int blen){ int i=0,j=0,k=0;\/\/每次将a和b中当前的元素进行比较,并将小的一个存入到c中 while(i<alen && j<blen){ if(a[i]<b[j])c[k]=a[i++];else c[k]=b[j++];k++;} \/\/其中一个数组已经结束,将另一...

C语言|判断数组中是否包含某个元素
而对于有序数组,查询效率更高。例如,如果数组已按升序排列,可以通过查找特定位置来减少比较次数。如下代码:改进后的代码,针对有序数组:用户输入一个数(如100),与有序数组中的元素进行比较:在12~14行增加了一个判断:如果nums[i]大于输入的num,说明num后面的元素也更大,可以提前结束循环,...

c语言 使用冒泡排序将一维数组A中的N个元素升序排列
int N,A[N]; int i,j,temp; printf("请输入数组大小!\\n");scanf("%d",&N);printf("请为%d个元素赋值\\n",N); for(i=0;i<N;i++)scanf("%d",&A[i]); for(i=0;i<N;i++)for(j=0;j<N-i;j++)if(A[j]>A[j+1]){ temp=A[j];A[j]=A[j+1];A[j+1]=temp;} } printf...

求C语言将数组元素大小排序!!
C语言将数组元素大小排序方法:以下使用的是冒泡排序法实线数组从小到大排序。思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的...

c语言中按第一个域升序排列是啥意思
表示要排序的元素有多个域 可能是多维数组,或者是结构体 比如 结构体的情况 struct test{ int a; char b;};类似这样的 第一个域就是a,也就是按照a进行升序排序。如果是二维数组 比如 int a[100][2];那就是对于每行的第一个元素 a[i][0]进行排序。

将数组a和数组b合并为升序排列的数组c,并将其显示在label3中
1、既然“要求1:程序应可以处理可变长度的数据。”,那就说明数组a和b的数据时如如进来的。我这里就临时放置了两个文本框控件,存储原始文本。2、合并的同时保持C有序,这里采用了ReDim Preserve控制才的容量和原有数据。3、为了验证C合并过程中有序,我加了一段程序。应用时删去即可。具体代码如下...

c语言,求大神帮助,共用体,两个成员,先升序排列,相等的话,再降序排列...
是不是这样:如果 wi 不相等就按 wi 升序,如果 wi 相等就按 pi 降序?改成下面这样应该就可以:include<stdio.h> void hh(int x,int n);struct kk { int wi;int pi;} s[100];void main(){ int i,j,n,x=1;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&s[i].wi);...

相似回答