-1
public static int[] mergeArray(int[] a, int[] b) {
int[] result = new int[a.length + b.length];
int i = 0; // to index array a
int j = 0; // to index array b
for (int k = 0; k < result.length; k++) {
if(a.length == i+1) {
result[k] = b[j-1];
j++;
}else if(b.length == j+1) {
result[k] = a[i-1];
i++;
}else if(a[i] > b[j]) {
result[k] = b[j];
j++;
}else if(a[i] < b[j]) {
result[k] = a[i];
i++;
}
}
return result;
}
// this method does the same thing as sortArray but much more efficiently
// it uses meregeArray
public static int[] mergeSortArray(int[] poop) {
int[] p1 = new int[poop.length/2];
int[] p2 = new int[poop.length-p1.length];
for (int i = 0; i<p1.length; i++) {
p1[i] = poop[i];
}
for (int i = 0; i<p2.length; i++) {
p2[i] = poop[i+p1.length - 1];
}
sortArray(p1);
sortArray(p2);
return mergeArray(p1, p2);
}
public static void main(String[] args) {
int[] poop = new int[] {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
String s = "";
for(int i : mergeSortArray(poop)){
s += i + ", ";
}
System.out.println(s);
}
代碼需要INT [],並將其轉換成兩個,則進行排序,但誤差似乎是在輸出作爲你可以看到下面它輸出兩個6的其是奇數和我不知道,任何幫助,將不勝感激:)java的歸併排序怪異輸出
這裏是輸出: 1,2,3,4,5,6,7,6,8,9,
謝謝大家誰幫助:)
你試過調試你的程序嗎?在'mergeSortArray'的初始運行後(提示 - 否),你會在p1,p2得到預期的結果嗎?什麼是'sortArray(p1)'? – TDG