首先,最重要的是,对于任何和所有的回复,预先感谢,他们不胜感激。现在到这篇文章的目的;我在Java中执行合并排序时遇到问题。我得到一个空指针异常,但是,我无法弄清楚错误是什么,对我来说代码看起来没问题。以下是我迄今:Java中的递归合并
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”方法声明,凡是能指出我的错误或指导我未来正确的方向非常感谢!
在哪里堆栈跟踪? –
恐怕我不知道那是什么,也许你可以详细说明一下? –
使用printStackTrace()获取NullPointerException的堆栈数据。 –