合并有序数组

合并有序数组 java代码

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
/**
* 合并两个有序的数组
*
* @param a 有序数组
* @param b 另一个有序数组
* @return 合并后的有序数组。
*/
private static int[] mergeOrderedArray(int[] a, int[] b) {
int[] c = new int[a.length + b.length];
int i = 0, j = 0, k = 0;
//
while (i < a.length && j < b.length) {
//
if (a[i] <= b[j]) {
// 先放小的数
c[k++] = a[i++];
} else {
c[k++] = b[j++];
}
}
while (i < a.length) {
c[k++] = a[i++];
}
while (j < b.length) {
c[k++] = b[j++];
}
return c;
}

测试

1
2
3
4
5
6
7
8
public static void main(String[] args) {
int[] a = { 1, 4, 5, 8, 9 };
int[] b = { 2, 3, 6, 7, 10, 11, 12 };
ArrayTools.printArray(a);
ArrayTools.printArray(b);
int[] c = mergeOrderedArray(a, b);
ArrayTools.printArray(c);
}

运行结果:

1
2
3
{1,4,5,8,9}
{2,3,6,7,10,11,12}
{1,2,3,4,5,6,7,8,9,10,11,12}