-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 []をとり、2つに変換してソートしますが、以下のようにエラーが出力されているように見えます。私はわからないんだけど、任意の助けをいただければ幸いです:)ここ java mergeSort奇妙な出力
が出力されます。 1、2、3、4、5、6、7、6、8、9、みんなありがとう誰が助けてくれるのですか?
プログラムをデバッグしようとしましたか? 'mergeSortArray'(Hint-NO)の最初の実行の後、p1、p2で期待される結果を得ますか? 'sortArray(p1)'とは何ですか? – TDG