Java冒泡排序 - 无限循环

时间:2014-12-12 00:59:09

标签: java

问题在于,当我尝试运行时,我得到一个无限循环。

  

boolean flag = true;

   do {
       flag = false;
       for (int i = 0; i < list.length-1; ++i) {
           if (list[i] > list[i + 1]) {
               swap(list, i, i + 1);
               flag = true;
           }

       }
   }
   while (flag == true);
编辑:我应该说问题是使用while循环,但这是由于for循环中发生了什么。 交换功能起作用,因为我之前已将它用于其他事情 如果真的需要,这是数组列表。

int [] list;
list = new int[5];
list[0] = 4; 
list[1] = 5;
list[2] = 12;
list[3] = 9;
list[4] = 3;

1 个答案:

答案 0 :(得分:1)

好的,除了交换之外我们还有你的所有代码,所以我用我可以认可的东西来替换你的交换。这里的一切都运行正常,没有无限循环。因此最有可能导致您的问题的交换方法

public static void main (String[] args) throws java.lang.Exception
{
    int [] list;
    int temp;   
    list = new int[5];
    list[0] = 4; 
    list[1] = 5;
    list[2] = 12;
    list[3] = 9;
    list[4] = 3;
    boolean flag = true;

    do {
        flag = false;
            for (int i = 0; i < list.length-1; ++i) {
                if (list[i] > list[i + 1]) {

                    //replaces your swap
                    temp = list[i];                
                    list[i] = list[i+1];
                    list[i+1] = temp;

                    flag = true;
                }

            }
        }
        while (flag == true);
        System.out.println(Arrays.toString(list));
    }
}

output = [3, 4, 5, 9, 12]