Java Bubble Sort只迭代两次

时间:2014-09-05 02:59:42

标签: java sorting loops iteration bubble-sort

我正在介绍Java课程,我只是想通过一些练习来领先于曲线,所以我正在制作一个冒泡排序程序。出于某种原因,它只会通过外循环两次。

public ArrayList SortArray(ArrayList<Integer> u) {
    int temp;
    int spot;
    for (int isOrdered = 1; isOrdered == 1;) {
        for (spot = 0; spot < u.size() - 1; spot ++) {
            System.out.println(u.get(spot) + " " + u.get(spot + 1) + " " + spot);
            if (u.get(spot) > u.get(spot + 1)) {
                temp = u.get(spot + 1);
                u.set(spot + 1, u.get(spot));
                u.set(spot, temp);
                isOrdered = 1;
            }
            else {
                isOrdered = 0;
            }
        }
    }
    return u;
}

据我所知,在第二次迭代之后发生了什么,它并没有重置现场&#39;为0,所以它不会再次循环。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

嗯,对于初学者来说,这是一种使用for循环实现while循环的不寻常方式。尝试使用isOrdered的布尔值和while(!isOrdered)这样的语句。

正如Ted Hopp的评论所说,你的逻辑并不完全正确。你的代码所做的是它会在列表中对一个值进行排序,一旦该值“冒泡”,你的标志就会设置为true。

你需要外循环的条件是它一直运行直到所有单元格都有序。

现在你的旗子只是说它已经排序了,当你通过列表​​时,但当它通过列表而没有执行交换时它需要做的是真的。

尝试不用看就能实现,然后如果你不能得到它(我假设你有兴趣自己做,因为你在班上工作)看一下样本{{3 }}