2018-05-07 13:32:12 707浏览
近期扣丁学堂Java在线学习小编会给大家分享一些比较实用的Java技能,对Java开发感兴趣的小伙伴们可以关注了解一下,本篇文章小编和大家分享的是归并算法之有序数组合并算法实现,下面我们一块来看一下吧。
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视频教程供学员观看学习,想要学好Java开发的小伙伴快快行动吧。Java技术交流群:670348138。
【关注微信公众号免费领取丁豆获取更多学习资料】