好的,这真的很尴尬,但我有一个冒泡排序似乎并不是每次都对数据进行完全排序。我甚至在纸上都已经过了,但我发现它没有任何问题。 (下面应该将偏移量排在左侧,将最小值排在右侧。
//Sort multiplicity by number of each card, bubble sort
int out, in;
for (out = multi.size() - 1; out > 1; out--) {
for (in = 0; in < out; in++) {
if (multi.get(in).getValue() < multi.get(in + 1).getValue()) {
CardMultiplicity temp = multi.get(in);
multi.set(in, multi.get(in+1));
multi.set(in+1, temp);
}
}
}
注意:multi是特定类型的Arraylist,在这里不重要。 一般来说,我几乎整理了它,但似乎它有时是一次短路。这里缺少什么?
答案 0 :(得分:4)
在你的循环中:
for (out = multi.size() - 1; out > 1; out--) {
你应该改变:
out > 1
致:
out > 0
答案 1 :(得分:1)
第一个循环运行直到out <1,因此它没有到达第0行,因为内循环也运行到out值。需要更正。
for (out = multi.size() - 1; out > 0; out--)//should do the trick