何よりもまず、すべての返信に事前に感謝します。彼らは大歓迎です。さて、この記事の目的です。Java でのマージ ソートの実装に問題があります。Null Pointer Exception が発生しましたが、何が間違いなのかわかりません。コードは問題ないように見えます。これが私がこれまでに持っているものです:
public List mSort(List l) {
if (l.size() <= 1)
return l;
List left = null;
List right = null;
int mid = l.size() / 2;
for (int x = 0; x < mid; x++)
left.add(l.get(x));
for (int x = 0; x >= mid; x++)
right.add(l.get(x));
left = mSort(left);
right = mSort(right);
return merge(left, right);
}
public List merge(List left, List right) {
List r = null;
while (left.size() > 0 || right.size() > 0) {
if (left.size() > 0 && right.size() > 0)
if (left.get(0) <= right.get(0)) {
r.add(left.get(0));
left.remove(0);
}
else {
r.add(right.get(0));
right.remove(0);
}
else if (left.size() > 0) {
r.add(left.get(0));
left.remove(0);
}
else if (right.size() > 0) {
r.add(right.get(0));
right.remove(0);
}
}
return r;
}
...どうやら、ポインター例外は「mSort」メソッドの「For」ステートメントから発生しているようです。私の間違いを指摘したり、正しい方向に導くことができるものは何でも大歓迎です!!!