全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

归并算法之有序数组合并算法实现

归并算法之有序数组合并算法实现

一个简单的有序数组合并算法:写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组。实现相当简单,创建一个长度为这两个长度之和的数组,然后分别用三个指针指向这三个数组,找到这两个数组中各个元素在合并数组中的位置并插入,直到某个数组指针到达尾部。再将另一个数组剩下的所有元素,直接放入归并数组尾部。算法的简单实现,需要注意的是对参数的校验,判断数组是否有序。

public class MergeOrderedArray { 
 public static int[] merge(int [] a,int []b){ 
  if(!isOrderedArray(a)){ 
   System.out.println(" array a is not an ordered array."); 
   return null; 
  } 
    
  if(!isOrderedArray(b)){ 
   System.out.println(" array b is not an ordered array."); 
   return null; 
  } 
   
  int a_len = a.length; 
  int b_len = b.length; 
  int[] merge = new int[a_len+b_len]; 
  int i=0,j=0,k=0; 
  while(i<a_len&&j<b_len){ 
   if(a[i]<b[j]){ 
    merge[k++]=a[i++]; 
   }else{ 
    merge[k++]=b[j++]; 
   } 
  } 
   
  //A数组全部合并完毕,将b数组剩余直接加入合并数组 
  if(i==a_len){ 
   for(;j<b_len;j++){ 
    merge[k++]= b[j]; 
   } 
  }else{ 
   for(;i<a_len;i++){ 
    merge[k++]= a[i]; 
   } 
  } 
   
  return merge; 
   
 } 
 
 public static boolean isOrderedArray(int [] array){ 
  if(array==null||array.length==0){ 
   return false; 
  } 
   
  for(int i = 0;i<array.length-1;i++){ 
   if(array[i]>array[i+1]){ 
    return false; 
   } 
  } 
  return true; 
 } 
  
 public static void main(String[] args) { 
  int a [] = {1,2,3,4,5}; 
  int b [] = {2,3,4,5,6,7,8,9}; 
  int [] merge = merge(a,b); 
  System.out.println(Arrays.toString(merge)); 
 } 
} 

      算法的时间复杂度,取决于待合并的两个数组的长度,所以是O(M+N),空间复杂度也是O(M+N),即需要的归并数组的长度是M+N。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 归并算法有序数组合并  # 归并算法  # Java实现把两个数组合并为一个的方法总结  # Java实现合并两个有序序列算法示例  # java 两个数组合并的几种方法  # 合并有序数组的实现(java与C语言)  # java实现把两个有序数组合并到一个数组的实例  # 这两个  # 的是  # 组中  # 希望能  # 谢谢大家  # 这三个  # 再将  # 创建一个  # 需要注意  # 长度为  # 一个函数  # static  # MergeOrderedArray  # public  # isOrderedArray  # merge  # int  # pre  # br  # strong 


相关文章: 建站之星备案流程有哪些注意事项?  如何通过虚拟机搭建网站?详细步骤解析  制作门户网站的参考文献在哪,小说网站怎么建立?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  Swift中switch语句区间和元组模式匹配  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站VPS推荐:2025年高性能服务器配置指南  如何快速打造个性化非模板自助建站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何通过VPS建站无需域名直接访问?  魔方云NAT建站如何实现端口转发?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何在阿里云高效完成企业建站全流程?  网站制作需要会哪些技术,建立一个网站要花费多少?  javascript中对象的定义、使用以及对象和原型链操作小结  ,想在网上投简历,哪几个网站比较好?  建站主机选购指南与交易推荐:核心配置解析  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  建站之星客服服务时间及联系方式如何?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  湖北网站制作公司有哪些,湖北清能集团官网?  如何在Windows虚拟主机上快速搭建网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  香港服务器部署网站为何提示未备案?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  成都响应式网站开发,dw怎么把手机适应页面变成网页?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  在线教育网站制作平台,山西立德教育官网?  学校建站服务器如何选型才能满足性能需求?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何选择适合PHP云建站的开源框架?  如何用虚拟主机快速搭建网站?详细步骤解析  如何用花生壳三步快速搭建专属网站?  如何快速使用云服务器搭建个人网站?  建站之星如何取消后台验证码生成?  建站之星导航菜单设置与功能模块配置全攻略  香港服务器建站指南:免备案优势与SEO优化技巧全解析  *服务器网站为何频现安全漏洞?  建站之家VIP精选网站模板与SEO优化教程整合指南  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何解决VPS建站LNMP环境配置常见问题?  ,巨量百应是干嘛的?  如何在阿里云域名上完成建站全流程?    开封网站制作公司,网络用语开封是什么意思? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。