用c语言编写两个有序数组合并,C++实现两个有序数组的合并
本文实例为大家分享了C++实现两个有序数组合并的具体代码,供大家参考,具体内容如下
剑指offer面试题5延展题:
问题:有两个排序的数组A1和A2,内存在A1的末尾有足够多的空间容纳A2。请实现一个函数,把A2中所有数字插入A1中,并且所有的数字是排序(默认升序)的。
思路:在合并两个数组(包括字符串)时,从前往后复制每个数字(或字符)则需要重复移动数字(或字符)多次,则考虑从后往前复制就可以减少移动的次数,从而提高效率。
1.n1,n2分别指向数组A1和A2的尾部,strNew指向合并后的数组的尾部;
2.当数组名是一个nullptr指针,或者A1数组是一个空数组则返回;
3.当数组A1[ida]>=A2[idb]或者idb<0时,则复制ida指针所指的数到strNew指向的位置,ida向前移动1格,strNew向前移动1格;
4.当数组A1[ida]
5.直到strNew<0则停止循环。
注意:
输入的n1,n2为数组的长度,作指针时都要-1;
循环终止的条件从合并数组指针入手,合并结束循环终止,即strNew<0;
注意形参和实参的传递,数组传入函数的三种声明func(int *arr), func(int arr[n]), func(int arr[]),返回数组指针的函数int * func( )
#include
#include
using namespace std;
int * insert(int *str1, int *str2, int n1, int n2,int length){
//int *dest = str1;
if(str1 == nullptr || str2 == nullptr || length <= 0){
return 0;
}
int strNew = n1 + n2 - 1;
int ida = n1-1;
int idb = n2-1;
while(strNew >= 0){
if(str1[ida] >= str2[idb] || idb<0){
str1[strNew--] = str1[ida];
ida--;
}
else if(str1[ida] < str2[idb] || ida<0){
str1[strNew--] = str2[idb];
idb--;
}
}
return str1;
//return dest;
}
int main()
{
int n1,n2;
cin>>n1>>n2;
int a[n1],b[n2];
for(int i = 0; i
cin>>a[i];
}
for(int i=0;i
cin>>b[i];
}
//int *c;
//c = insert(a, b, n1, n2, 100);
insert(a, b, n1, n2, 100);
for(int i=0;i
cout<
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
时间: 2020-02-06
用c语言编写两个有序数组合并,C++实现两个有序数组的合并相关推荐
- c语言二维数组输入数据,c语言编写程序,把下面的数据输入到一个二维数组中:...
c语言编写程序,把下面的数据输入到一个二维数组中: 答案:3 信息版本:手机版 解决时间 2019-10-07 01:08 已解决 2019-10-06 03:19 1. 编写程序,把下面的数据输入 ...
- m被3整除的c语言表达式,C语言编写函数fun,实现从整数m到n,能被3整除
1.用c语言编写程序,实现输入10个数,分别求其最大值.最小值及平均数,要求用函数实现. #includevoidfun(doublea[10],intn){inti;doubleave,max,mi ...
- c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.
C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...
- 用C语言编写简化版银行系统:ATM取款机(数组版)
问题描述: 该银行储蓄系统的目标.结合前面的基础上开始设计一个c版银行储蓄系统,前面刚学完c言的基本操作以及自定义函数,还未涉及指针以及构体.这个简化版银行系统算是结合前面所学的知识的一个总结,适合初 ...
- C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。
例题:请编写函数fun,其功能是:将两个两位正整数x.y合并成一个整数放在z中.合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上. 例如,当x=12,y=3 ...
- (32)SystemVerilog语言编写打两拍
2.02 SystemVerilog语言编写打两拍 2.2.1 本节目录 1)章节目录: 2)FPGA简介: 3)SystemVerilog简介: 4)SystemVerilog语言编写打两拍: 5) ...
- (2)verilog语言编写打两拍
2.2.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写打两拍: 5)本节结束. 2.2.2 FPGA简介 FPGA(Field Programm ...
- C语言向有序数组中插入一个数使该数组仍保持有序
C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() { int n,i,j,t,k; printf("您喜欢 ...
- java输入两个整数_求平均值._用C语言编写:完成从键盘输入两个整数a和b,求平均值ave,并输出平均值...
#includevoid main(){int a,b,ave;printf("输入两个整数:');scanf("%d%d",&a,&b);ave=(a+ ...
最新文章
- O2O业务都跳不出这五大领域
- gulp html 模块化,使用Gulp如何实现静态网页模块化具体怎么做?
- 4、Power View—卡的应用
- C++11多线程thread参数传递问题
- Java第2章:变量和运算符
- MySQL 5.7安装配置方法
- 与postman的第一次亲密接触
- mis系统的编写与设计
- 为谷歌浏览器Chrome创建多个用户
- C++实现截图截屏功能汇总
- fopen打开文件名(文件路径含中文或韩语)方法测试
- Matlab如何修改坐标轴在figure里面的位置
- 全球手机芯片产业格局未定,LTE和中国是最大变数
- 不愧是阿里P8!深入理解Java虚拟机pdf百度云
- 对一个8位(一字节)数的倒序处理
- 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)
- 【愚公系列】2022年01月 Java教学课程 73-反射
- html窗口最小宽度和高度,html设置尺寸大小的方法
- 渠得清如许,源头活水来——2015年年终总结
- 我的世界java营火如何合成_营火 - Minecraft Wiki,最详细的官方我的世界百科