06.有序数组合并
目录介绍
- 01.题目要求
- 02.问题分析
- 03.实例代码
01.题目要求
- 问题如下所示:
- 给你两个有序数组,a是{ 1, 3, 4 },b是{ 2, 3, 5, 6 },请把他合成一个新的数组,然后输出……
- 示例 :
如下所示
02.问题分析
03.实例代码
- 如下所示
// 合并数组 public static int[] mergeArray(int[] a, int[] b) { int result[] = new int[a.length + b.length]; if (checkSort(a) && checkSort(b)) { // 说明ab数组都是有序的数组 // 定义两个游标 int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] <= b[j]) { result[k++] = a[i++]; } else { result[k++] = b[j++]; } } while (i < a.length) { // 说明a数组还有剩余 result[k++] = a[i++]; } while (j < b.length) { result[k++] = b[j++]; } } return result; } // 检查一个数组是否是有序1 2 3 public static boolean checkSort(int[] a) { boolean flag = false;// 默认不是有序的 for (int i = 0; i < a.length - 1; i++) { if (a[i] > a[i + 1]) { // 说明不是有序的 flag = false; break; } else { flag = true; } } return flag; }
- 测试结果
public static void main(String[] args) { int[] a = { 1, 3, 4 }; int[] b = { 2, 3, 5, 6 }; int[] c = mergeArray(a, b); for (int n : c) { System.out.print(n + " "); } }