下面的程序是冒泡排序。有个奇怪的问题:注释掉的那一段代码,如果不注释而让它运行的话,外层循环就只运行一次,注释掉的话则正常运行正确计算。不知这段打印数组的代码为何会停止循环? public static void maopaoPro(int[] num) {
int tmp;
boolean swap = true; //交换标记,未交换过则true;
int n = num.length;
for (int i = 0; i < n; i++) {
swap = true;
System.out.println("[" + n + "]===" + i + "====");
for (int j = 0; j < n-i-1; j++) {
if (num[j] > num[j + 1]) {
System.out.println(num[j] + "<=>" + num[j + 1]);
tmp = num[j];
num[j] = num[j + 1];
num[j + 1] = tmp;
swap = false;
}
}
// for (i = 0; i < num.length; i++) {
// System.out.print(num[i] + ",");
// }
System.out.println();
System.out.println(swap);
if (swap==true) { //未交换过
return;
}
}
}
int tmp;
boolean swap = true; //交换标记,未交换过则true;
int n = num.length;
for (int i = 0; i < n; i++) {
swap = true;
System.out.println("[" + n + "]===" + i + "====");
for (int j = 0; j < n-i-1; j++) {
if (num[j] > num[j + 1]) {
System.out.println(num[j] + "<=>" + num[j + 1]);
tmp = num[j];
num[j] = num[j + 1];
num[j + 1] = tmp;
swap = false;
}
}
// for (i = 0; i < num.length; i++) {
// System.out.print(num[i] + ",");
// }
System.out.println();
System.out.println(swap);
if (swap==true) { //未交换过
return;
}
}
}
注释部分的循环完毕时,i已经是n了。