我们先来看看原题目:
/** * ClassName: MergeSortArray <br/> * Function: 合并有序数组<br/> * [1, 2, 2, 5] * [3, 4, 7, 8, 9] * * */
思路分析:
双指针移动从前往后的比较,然后把剩余的数据再复制到合并数组里,其实这也是归并排序的最核心的代码,归并排序(先拆分后合并)分而治之中治的环节。
实现代码:
public static int[] mergeSortArray(int[] a, int[] b){ int length1 = a.length, length2 = b.length; int[] merge = new int[length1 + length2]; int i = 0, j = 0, k = 0; while(i < length1 && j < length2){ if(a[i] <= b[j]){ merge[k++] = a[i++]; }else{ merge[k++] = b[j++]; } } while(i < length1){ merge[k++] = a[i++]; } while(j < length2){ merge[k++] = b[j++]; } return merge; } public static void mAIn(String[] args) { int[] a = {1, 2, 2, 5}; int[] b = {3, 4, 7, 8, 9}; int[] merge = mergeSortArray(a, b); for(int i = 0; i < merge.length; i++){ System.out.println(merge[i]); } }
运行结果:
1 2 2 3 4 5 7 8 9
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)