合并两个有序的数组,使得合并后的结果也是有序
2021-05-29 19:13
标签:tar 个数 返回 ++ 填充 out public 合并 数据拷贝 将两个已经排好序的数组进行合并,使得合并后的数组也是有序 排好序的结果 合并两个有序的数组,使得合并后的结果也是有序 标签:tar 个数 返回 ++ 填充 out public 合并 数据拷贝 原文地址:https://www.cnblogs.com/yanchuanbin/p/14764581.html引言
示例: int a[] = {1, 3, 5, 11, 20};
int b[] = {1, 2, 3, 4, 7, 8, 11, 25, 30};
1 1 2 3 3 4 5 7 8 11 11 20 25 30
代码
public class MergeArray {
public static int[] mergeSortedArrays(int a[], int b[]) {
//如果其中一个长度为0,直接返回另外一个数组
if (a.length == 0) {
return Arrays.copyOf(b, b.length);
}
if (b.length == 0) {
return Arrays.copyOf(a, a.length);
}
//合并后的结果
int[] c = new int[a.length + b.length];
//i:a[]的索引位置
//j:b[]的索引位置
//k:c[]的索引位置
int i = 0, j = 0, k = 0;
while (true) {
//如果c已经被填充满了,则已经排好充了,直接退出循环返回即可
if (k == c.length) {
break;
}
//当其中一个数组已经被扫描完了,直接将另外一个数组当前位置上的数据拷贝到c上
if (i == a.length) {
c[k++] = b[j++];
continue;
}
//当其中一个数组已经被扫描完了,直接将另外一个数组当前位置上的数据拷贝到c上
if (j == b.length) {
c[k++] = a[i++];
continue;
}
//将小的那一个拷贝到c当前位置上
if (a[i]
上一篇:Java——代码块
下一篇:java-08- 接口