/** * @author:(LiberHome) * @date:Created in 2019/2/27 16:49 * @description:实现二路归并排序 * @version:$page03 */ /*已知有两个递增的有序数组,将它们合并为一个有序数组*/ public class page03 { public static void main(String[] args) { int[] num00 = {1, 3, 77, 7866}; int[] num01 = {0, 0, 56, 344, 456, 24455}; int[] numResult; numResult = mergeArray(num00, num01); show(numResult); } private static void show(int[] numResult) { for (int i = 0; i < numResult.length; i++) { System.out.print(" " + numResult[i]); } } private static int[] mergeArray(int[] num0, int[] num1) { /*获取结果数组长度*/ int size = num0.length + num1.length; /*新建一个结果数组*/ int[] answer = new int[size]; /*首先从2个数组的第一个元素开始比较,较小的进入结果数组*/ int i = 0; int j = 0; int k = 0; while (i < num0.length && j < num1.length) { int smaller = (num0[i] < num1[j] ? num0[i++] : num1[j++]); answer[k++] = smaller; } /*如果数组num0的所有元素都进入结果数组,数组num1未完全进入*/ if (i == num0.length && j < num1.length) { /*数组num1剩下的元素全部直接接到结果数组后面*/ for (int m = j; m < num1.length; m++) { answer[k++] = num1[m]; } } /*如果数组num1的所有元素都进入结果数组,数组num0未完全进入*/ if (j == num1.length && i < num0.length) { /*数组num0剩下的元素全部直接接到结果数组后面*/ for (int n = i; n < num0.length; n++) { answer[k++] = num0[n]; } } /*返回结果数组*/ return answer; } }
两个递增的有序数组二路归并成一个递增的数组
猜你喜欢
转载自www.cnblogs.com/liberhome/p/10445521.html
今日推荐
周排行