合并两个有序数组

题目描述:

有两个排序的数组A1和A2,内存在A1的末尾有足够的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入到A1中,并且所有的数字是排序的。
思路分析:从尾到头边比较,边移入正确的位置,时间复杂度为O(n)

#include <iostream>
using namespace std;void Combin2Array(int str1[], int length1, int str2[], int length2)
{if (str1 == nullptr|| length1 <= 0 || str2 == nullptr || length2 <= 0)return;int len1 = 0;for (int i = 0; i < length1; ++i) //使用for循环计算数组中实际的元素数目{if (str1[i])len1++;}int newLength = len1+length2 - 1;//这是最新修改的地方!!!新数组的长度是两个数组非零元素数量之和int len2 = length2 - 1;len1--; //数组最后一个数字的序号为长度减一while (len1 >= 0 && len2 >= 0){if (str1[len1] < str2[len2]){str1[newLength--] = str2[len2--];}else{str1[newLength--] = str1[len1--];}}//下面这部分是新增的,不可缺少,处理一个数组中的元素已经完全加入到新数组,另一个还没完的情况while (len1 < 0 && len2 >= 0){str1[newLength--] = str2[len2--];}while (len2 < 0 && len1 >= 0){str1[newLength--] = str1[len1--];}
}
int main()
{int array1[100] = { 1, 3, 5, 7, 9 };int array2[] = { 2, 4, 6, 8, 10 , 11, 12, 13, 14, 15};//int array1[100] = {13, 15, 16, 17, 19 };//int array2[] = { 2, 4, 6, 8, 10 , 11, 12, 13, 14, 15};Combin2Array(array1, sizeof(array1) / sizeof(int), array2, sizeof(array2) / sizeof(int));for (int i = 0; i < sizeof(array1) / sizeof(int); ++i){if (array1[i])//增加判断条件,只输出非零元素!!!{cout << array1[i] << '\t';}}/*基于范围的for循环for (auto x :array1){cout << x << '\t';}*/return 0;
}

运行结果如下:

合并两个有序数组C++相关推荐

  1. 数组-合并两个有序数组(双指针,从后往前)

    题意: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 ...

  2. LeetCode-双指针-88. 合并两个有序数组

    88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...

  3. LeetCode 88合并两个有序数组89格雷编码

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  4. 合并两个无序数组java_88. 合并两个有序数组

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2的 ...

  5. 合并两个有序数组(双/三指针)

    今天写作业,合并两个有序数组a和b,时间复杂度要求O(n),空间复杂度要求O(1). 很快想到创建第三个数组c,用双指针初始化指向a和b的头元素,每次选择较大者在c上尾插进去之后,再后移相对应a或者b ...

  6. 双指针:88. 合并两个有序数组

    题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...

  7. LeetCode 88. 合并两个有序数组 golang

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

  8. 88. 合并两个有序数组 golang

    88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

  9. 中数组的合并_【美团面试题】合并两个有序数组

    [美团面试题]合并两个有序数组 题目描述 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组 划重点 初始化 nums1 和 ...

  10. LeetCode--88.合并两个有序数组(插入法,排序法)

    合并两个有序数组(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python语言实现 1. 题目描述 难度:简单 2. 题目分析 这道题比较简单,实现方法有两种: 插入 ...

最新文章

  1. 中山大学计算机学院运动会,喜讯!我院获2019中大校运会教工组团体第二名
  2. UVa 374 - Big Mod
  3. Follow me!百万奖金由你拿 | 精准资助机器学习(三)
  4. 就linux学习的一点感受,谈谈前天面试后的感受吧,关于学习Linux
  5. zabbix监控搭建
  6. Ubuntu常用服务器环境搭建——Nginx+PHP篇
  7. 肺癌图片识别相关的资料调研
  8. css两栏式布局示例
  9. 初中参观机器人博物馆的作文_展馆导览机器人好不好用?小笨展馆机器人案例...
  10. plsql轻量版游标的使用
  11. python的特征提取实验一_Spark 2.1.0 入门:特征抽取 — TF-IDF(Python版)
  12. 向域管理转型所遇到的问题
  13. foreach 页面超时php,解决php运行超时的方法
  14. Python之函数进阶
  15. 程序状态字寄存器PSW
  16. 用友NCCloud2021.11 专项漏洞补丁列表
  17. MCTS人工智能围棋
  18. 使用盒式布局实现登录界面
  19. Windows启动过程详解
  20. 对堆区、栈区、全局静态区的理解

热门文章

  1. 使用AForge录制视频
  2. jsp linux 一键安装包,JspStudy免费版|JspStudy(jsp环境一键安装包) v2016.01.01免费版_星星软件园...
  3. iText实现html转pdf
  4. Tomcat 修改启动端口号
  5. python 调用海康linux下psdatacall_demo,实现获取视频码流并返回到python,以及上传信息到人脸库的方法
  6. 使用Tesseract-OCR识别图片中的文字并生成双层PDF
  7. esp8266控制ws2812b
  8. matlab机器人模型仿真,一知半解|MATLAB机器人建模与仿真控制(1)
  9. python如何更新pip_[Python] 如何更新 PIP 到最新版本?
  10. Windows 中批量重新注册所有的DLL文件的方法