1

好的,这真的很尴尬,但是我有一个冒泡排序,似乎每次都没有对数据进行完全排序。我什至在纸上都看过它,但我找不到任何问题。(下面应该将最大的排序到左边,最小的排序到右边。

 //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,在这里应该不重要。一般来说,我几乎把它整理好了,但有时它似乎是短了一个。这里缺少什么吗?

4

2 回答 2

4

在你的循环中:

for (out = multi.size() - 1; out > 1; out--) {

你应该改变:

out > 1

至:

out > 0

于 2013-04-28T20:47:01.953 回答
1

第一个循环一直运行到 out<1,因此它没有到达第 0 行,因为内部循环也一直运行到 out 值。需要更正。

for (out = multi.size() - 1; out > 0; out--)//should do the trick
于 2013-04-28T20:50:03.660 回答