Java实现合并两个有序序列算法示例
发布时间 - 2026-01-11 03:16:39 点击率:次本文实例讲述了Java实现合并两个有序序列算法。分享给大家供大家参考,具体如下:

问题描述
输入:序列A<a0,a1,a2,...aq,aq+1,aq+2,...,ar>,其中a0<a1<...<aq,aq+1<aq+2<...<ar
输出:序列B<b0,b1,...,br>,其中b0<b1<...<br
算法思想
创建一个长度为r的数组R,将A中的序列看作是两个有序序列
B=A<a0,a1,a2,...,aq>
C=A<aq+1,aq+2,...,ar>
分别从B和C中拿取一个数进行比较,将较小的放入R,如果这个数在B中,则继续取B中下一个最小的数;如果在C中,同样操作。所有数都在R中。
Ri=MIN(B)<=MIN(C)?MIN(B):MIN(C)
如果B或C没有更多的数可以获取,则将另一个序列的所有数填制R。
Ri=(MIN(B)MIN(C))
算法实现
/**
*
* @author Chuck
*
*/
public class Merge {
/**
* 合并两个有序序列
* @param A 待合并序列
* @param q 第二个序列开始数组下标
* @return 合并后的新数组
*/
public static int[] merge(int [] A,int q){
//创建数组
int n = A.length;
int [] R = new int[n];
int i = 0;
int j = q+1;
int k = 0;
//如果两个数组B 和 C中都有数据则选择更小的加入到R中并获取下一个
while(i<=q&&j<=n-1){
if(A[i]<=A[j]){
R[k]=A[i];
i++;
}else{
R[k]=A[j];
j++;
}
k++;
}
//如果B中有数据则把所有数据加入到R中
while(i<=q) R[k++] = A[i++];
//如果C中有数据则把所有数据加入到R中
while(j<n-1) R[k++] = A[j++];
return R;
}
public static void main(String [] args){
int [] A = {5,6,7,8,9,44,55,66,788,1,3,10,45,59,70,188};
int q = 8;
int [] R = Merge.merge(A, q);
for(int i=0;i<R.length;i++){
System.out.print(R[i] +" ");
}
}
}
算法时间
f(n)=q+1+r−q=r+1
这里的r是数组的输入规模,所以算法最坏情形运行时间为:
f(n)=O(n)
演示结果
1 3 5 6 7 8 9 10 44 45 55 59 66 70 188 788
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
# Java
# 合并
# 有序序列
# 算法
# Java实现把两个数组合并为一个的方法总结
# java 两个数组合并的几种方法
# 合并有序数组的实现(java与C语言)
# 归并算法之有序数组合并算法实现
# java实现把两个有序数组合并到一个数组的实例
# 中有
# 则把
# 操作技巧
# 相关内容
# 都在
# 感兴趣
# 数据结构
# 第二个
# 给大家
# 时间为
# 较小
# 更多关于
# 中都
# 取下
# 所述
# 并获
# 创建一个
# 程序设计
# 更小
# 则将
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel如何使用Service Container和依赖注入?(代码示例)
如何在万网利用已有域名快速建站?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
如何用PHP快速搭建CMS系统?
轻松掌握MySQL函数中的last_insert_id()
网站制作壁纸教程视频,电脑壁纸网站?
再谈Python中的字符串与字符编码(推荐)
手机网站制作与建设方案,手机网站如何建设?
Python图片处理进阶教程_Pillow滤镜与图像增强
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何在阿里云通过域名搭建网站?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何处理表单验证?(Requests代码示例)
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
如何用VPS主机快速搭建个人网站?
如何在Tomcat中配置并部署网站项目?
iOS中将个别页面强制横屏其他页面竖屏
千库网官网入口推荐 千库网设计创意平台入口
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
如何快速完成中国万网建站详细流程?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
教你用AI将一段旋律扩展成一首完整的曲子
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
网站图片在线制作软件,怎么在图片上做链接?
魔方云NAT建站如何实现端口转发?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Python结构化数据采集_字段抽取解析【教程】
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
微信公众帐号开发教程之图文消息全攻略
详解Android——蓝牙技术 带你实现终端间数据传输
三星、SK海力士获美批准:可向中国出口芯片制造设备
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
如何快速搭建高效WAP手机网站吸引移动用户?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?

