我有一個項目,需要我合併兩個排序數組(a和b),並將結果放入一個長度爲a.length + b.length的新數組中。 我正在跟蹤我的位置在所有3個數組中的計數器,並且我的數組長度不相等。我的約定是,如果一個數組在另一個之前耗盡,代碼會將其他數組的其餘部分轉儲到結果數組中。合併不等長的排序數組
不幸的是,我可以檢查其他數組是否仍包含元素的唯一方法是for循環。
任何人都可以幫助我嗎?這應該是一個相對簡單的解決方案,但我想不出一個解決方案。
public class Two {
public static void main(String[] args) {
//sample problem
int[] var_a = {2,3,5,5,8,10,11,17,18,20};
int[] var_b = {5,6,7,8,14,15,17};
final int a_size = 10;
final int b_size = 7;
final int c_size = 17;
int[] var_c = new int[17];
int aCount = 0;
int bCount = 0;
int cCount = 0;
for (cCount = 0; cCount < c_size; cCount++) {
//b runs out before a runs out
if ((bCount == b_size) && (aCount <= a_size)) {
//dump rest of var_a into var_c
var_c[cCount] = var_a[aCount];
aCount++;
}
//PROBLEM: bCount is equal to bSize, and is triggering the break.
//a runs out before b runs out
else if ((aCount == a_size) && (bCount <= b_size)) {
//dump rest of var_b into var_c
var_c[cCount] = var_b[bCount];
bCount++;
}
if ((aCount >= a_size) || (bCount >= b_size) || (cCount >= c_size)) {break;}
if (var_a[aCount] < var_b[bCount]) {
var_c[cCount] = var_a[aCount];
aCount++;
} else if (var_a[aCount] > var_b[bCount]) {
var_c[cCount] = var_b[bCount];
bCount++;
} else if (var_a[aCount] == var_b[bCount]) {
var_c[cCount] = var_a[aCount];
aCount++;
cCount++;
var_c[cCount] = var_b[bCount];
bCount++;
}
}
for (int i : var_c) {
System.out.print(i + " ");
}
}
}
你忘了問一個實際的問題嗎? – Kayaman
試一試while循環 – Raidri