问题在于,当我尝试运行时,我得到一个无限循环。
编辑:我应该说问题是使用while循环,但这是由于for循环中发生了什么。 交换功能起作用,因为我之前已将它用于其他事情 如果真的需要,这是数组列表。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);
int [] list;
list = new int[5];
list[0] = 4;
list[1] = 5;
list[2] = 12;
list[3] = 9;
list[4] = 3;
答案 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]