题目:有两个有序数组a[]和b[],将它们合并成数组c[],需要c[]也是有序数组。
思路:新建一个以两个集合长度之和为长度的新数组,从两数组最左边开始比起,把小的放入新集合,并用变量标记后一位置,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class MyClass { public static void main(String[] args) { int [] num1 = new int []{ 1 , 2 , 4 , 6 , 7 , 123 , 411 , 5334 , 1414141 , 1314141414 }; int [] num2 = new int []{ 0 , 2 , 5 , 7 , 89 , 113 , 5623 , 6353 , 134134 }; //变量用于存储两个集合应该被比较的索引(存入新集合就加一) int a = 0 ; int b = 0 ; int [] num3 = new int [num1.length + num2.length]; for ( int i = 0 ; i < num3.length; i++) { if (a < num1.length && b < num2.length) { //两数组都未遍历完,相互比较后加入 if (num1[a] > num2[b]) { num3[i] = num2[b]; b++; } else { num3[i] = num1[a]; a++; } } else if (a < num1.length) { //num2已经遍历完,无需比较,直接将剩余num1加入 num3[i] = num1[a]; a++; } else if (b < num2.length) { //num1已经遍历完,无需比较,直接将剩余num2加入 num3[i] = num2[b]; b++; } } System.out.println( "排序后:" + Arrays.toString(num3)); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)