正文
c语言函数数的合并 c语言合并果子
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
C语言编程 自定义两个两位数的整数合并函数:
首先假设合并函数的功能:将两个两位数的整数 a、b 合并成一个整数放在 c 中。合并的方
式是:将 a 的十位和个位数依次放在 c 数千位和十位上,b 数的十位和个位数依次放在 c 数的个位和百位上。
实现方法如下:
C语言中数组的合并
//两个数组合并,参考代码:
#include "stdio.h"
int d=0; //用于记录数组c的大小,和数组c的输出类的一些操作
void main()
{
int a[50],b[50],c[100];
int i,j,k; //i表示a数组的大小 j表示b数组的大小 k用于数组的输出
printf("数组a的输入,输入一个数,表明你要输入多少个数到数组a中\n");
scanf("%d",i);
for(k=0;ki;k++)
scanf("%d",a[k]);
printf("数组b的输入,输入一个数,表明你要输入多少个数到数组b中\n");
scanf("%d",j);
for(k=0;kj;k++)
scanf("%d",b[k]);
void px(int *p,int n); //声明 排序 冒泡法
px(a,i); //调用
px(b,j); //调用
void prin(int *p,int n); //声明 数组的输出函数
prin(a,i);
prin(b,j);
void hb(int *o,int *p,int *q,int m,int n); //声明 两个数组的合并函数 前提:这俩个数组必须是排好序的
hb(c,a,b,i,j);
prin(c,d);
}
void px(int *p,int n) //自定义函数 排序 冒泡法
{int i,j,t,leap;
for(i=0;in-1;i++) //外层循环n-1次,一次循环沉淀一个数
{
leap=0; //leap作为标记,是否两数相换
for(j=0;jn-i-1;j++) //内循环n-i-1次
{
if(p[j]p[j+1]) //比较两个数
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t; //来两个数交换
leap=1; //交换了,标记leap=1
}
}
if(leap==0) break; //经历了一个内for循环,leap==0的话,表明排序成功了,不需要接下来在排序了。
}
}
void prin(int *p,int n) //自定义函数 数组输出函数
{
int k,sum=0;
for(k=0;kn;k++)
{
printf("%d ",p[k]);
sum++;
if(sum%10==0) printf("\n");
}
printf("\n");
}
void hb(int *o,int *p,int *q,int m,int n) //m为p指向数组的大小 n为q指向数组的大小 指针o指向合并的数组
{
int i=0,j=0,k; //i为p指向数组的大小 j为q指向数组的大小
while(1)
{
if(p[i]q[j])
{
o[d]=p[i];
i++;
d++;
}
else
{
o[d]=q[j];
j++;
d++;
}
if(i==m||j==n) break;
}
if(i==m)
{
for(k=j;kn;k++)
{
o[d]=q[k];
d++;
}
}
if(j==n)
{
for(k=i;km;k++)
{
o[d]=p[k];
d++;
}
}
}
c语言中的merge函数
merge()是C++标准库的函数,主要实现函数的排序和合并,不仅仅是合并,具体要求参照标准库。
#include"stdafx.h"
#includeiostream
#includealgorithm
#includearray
#includelist
usingnamespacestd;
boolcomp(constinti,constintj){
returnij;
}
intmain(void){
/*自定义谓词*/
std::arrayint,4ai1={1,3,4,5};
std::listintlsti1;
for(constautoi:ai1)
lsti1.push_front(i);//从大到小
std::arrayint,4ai2={2,6,7,8};
std::listintlsti2;
for(constautoi:ai2)
lsti2.push_front(i);
lsti1.merge(lsti2,comp);
std::cout"merge():";
for(constautoi:lsti1)
std::couti"";
std::coutstd::endl;
/*默认谓词*/
std::arrayint,4ai1d={1,3,4,5};
std::listintlsti1d;
for(constautoi:ai1d)
lsti1d.push_back(i);//从小到大
std::arrayint,4ai2d={2,6,7,8};
std::listintlsti2d;
for(constautoi:ai2d)
lsti2d.push_back(i);
lsti1d.merge(lsti2d);
std::cout"merge():";
for(constautoi:lsti1d)
std::couti"";
std::coutstd::endl;
return0;
}
扩展资料
Merge算法的两种接口,把两个有序的数组合并到另一个数组中:
void Merge(int *A, int f, int m, int e){
int temp[e-f+1];
int i,first=f,last=m+1;
for(i=0;i(e-first+1)f=mlast=e;i++){
if(A[f]=A[last]) {
temp[i]=A[f];
f++;
}
else {
temp[i]=A[last];
last++;
}
}
while(fmlast=e){
temp[i]=A[last];
i++;
last++;
}
while(f=mlaste){
temp[i]=A[f];
i++;
f++;
}
for(i=0;first=e;i++,first++){
A[first]=temp[i];
}
}
参考资料来源:百度百科—c语言
关于c语言函数数的合并和c语言合并果子的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。