/***  需求:两个有序数组nums和nums2将nums2合并到nums1中,使得nums1成为一个有序数组***/
public class Mergesz {public static void main(String[] args) {int [] nums1 = {1,2,3,4,8,0,0,0};int [] nums2 = {2,3,4};merge(nums1,5,nums2,3);for ( int i: nums1) {System.out.println(i);}}/*** 假设nums1的空间大小等于m+n就可以有足够的空间* 时间复杂度O((m+n)log(n+m))* 空间复杂度O(1)* 合并后再排序* @param nums1* @param m 已经排好序的元素的个数* @param nums2* @param n*/public static void merge(int [] nums1,int m,int [] nums2,int n){System.arraycopy(nums2,0,nums1,m,n);Arrays.sort(nums1);//返回的还是nums1}/*** 利用双指针,从后往前* 时间复杂度O(n+m)* 空间复杂度O(1)* @param nums1* @param m* @param nums2* @param n*/public static void mergeDouble(int [] nums1,int m,int [] nums2,int n){//指针先指向最后一个元素的索引,然后慢慢向前移动,当索引<0时结束循环int p1 = m-1;int p2 = n-1;int p=m+n-1;while ((p1>=0)&&(p2>=0)){nums1[p--] = (nums1[p1]<nums2[p2])? nums2[p2--]:nums1[p1--];}//如果两个数组的长度不一致/*** 退出循环之后,其中一个数组必定排序完成,剩余数组的元素本就是排序好的数组,只需将数组2中剩余的元素直接copy* 如果剩余的是p2,直接copy到最前面,如果剩余的是p1就不需要再排了,(因为本来就在数组一中操作)*/System.arraycopy(nums2,0,nums1,0,p2+1);//最后一个参数代表的是元素的个数,所以要索引+1}
}

合并两个有序数组两种方式相关推荐

  1. 两种思路将Python中两个有序数组合并为一个有序数组

    第一种思路: 把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性. 第二种思路: 循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中 ...

  2. 两个有序数组的合并问题

    问题描述 编写函数,将两个有序 vector 数组合并成一个新的有序 vector数组,函数原型为: vector<int> merg(vector<int> list1,ve ...

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

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

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

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

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

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

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

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

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

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

  8. 如何快速合并两个有序数组?

    前言 大家好,我是来自于「华为」的「程序员小熊」.今天给大家带来一道与「数组」相关的题目,这道题同时也是字节.微软和亚马逊等互联网大厂的面试题,即力扣上的第 88 题-合并两个有序数组. 本文主要介绍 ...

  9. 高效合并两个有序数组

    问题: 两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组. 分析: 考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率.如果单纯从前往后合并,那么效率会非常低,因为a数组 ...

最新文章

  1. 数字图像处理:(1)图像梯度以及算子应用
  2. 查看当前正在运行的python进程
  3. IC/FPGA笔试/面试题分析(八)近期IC/FPGA笔试面试讨论群题目汇总解析
  4. highcharts的导出功能
  5. centos配置yum本地源
  6. 编程方法学8:信息隐藏
  7. referer参数和addslashes()函数的骚路子
  8. pyqt5——控件1
  9. 跟“网址”有关的$_SERVER[ ]变量
  10. 中国省份城市数据库表
  11. win7 flash 提示加载失败
  12. SWUST OJ 1132: Coin-collecting by robot
  13. 模拟登陆115网盘(MFC版)
  14. 钉钉自定义机器人提示报警信息
  15. 【插件】Unity插件UnitySRDebugger的简单使用
  16. win10下启动.bat文件闪退问题
  17. VDI虚拟桌面基础架构
  18. ctab法提取dna流程图_(完整版)CTAB法提取DNA原理及步骤、制胶、电泳
  19. Flutter尽然还能有这种操作!隔壁都馋哭了
  20. Coding git@e.coding.net: Permission denied (publickey)

热门文章

  1. 博客能赚钱吗?如何赚钱
  2. 李斌胡玮炜退出摩拜股东行列 美团点评王兴穆荣均加入
  3. java的IO技术中什么是I什么是O?
  4. 申请知识产权需要什么条件?
  5. 美图秀秀3.91.1001下载(图片处理软件去广告纯净绿化版)
  6. 张小龙演讲4小时完整笔记(精华版)
  7. 【信号与系统】(十六)傅里叶变换与频域分析——傅里叶变换的性质
  8. c#应用程序如何添加弹出式广告功能
  9. 搜索推荐系统[10]项目实战系列Z1:手把手教学(商品搜索系统、学术文献检索)语义检索系统搭建、召回排序模型详解。
  10. 西安邮电大学《面向对象与C++程序设计》PTA上机期末考试试题(随机)