新手问题:关于循环语句执行
自学Java一段时间,看到讲师关于冒泡排序的代码时,顿时头大了:
public class BubbleSortTest
{
public static void bubbleSort(int[] array)
{
for(int i = 0; i < array.length - 1; i++)
{
for(int j = 0; j < array.length - i - 1; j++)
{
if(array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "趟排序");
for(int k = 0; k < array.length; k++)
{
System.out.print(array[k] + " ");
}
System.out.println();
}
}
public static void main(String[] args)
{
int[] array = {4, 7, 8, 9, 3, 2};
bubbleSort(array);
}
}
这是我自己写的关于{4,7,8,9,3,2}排序的代码
public class BubbleTest
{
public static void main(String[] args)
{
int[] a = new int[]{4, 7,8,9, 3,2};
for(int i = 0; i < a.length - 1; i++)
{
if(a[i] >= a[i+1])
{
int temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
System.out.println(a[i]);
}
continue;
}
}
我这个绝对的贻笑大方,但是我看了无数次正确的之后,还是一头雾水,我发现问题就有点严重了。
我觉得自己有这几个循环执行的问题始终弄不明白:
1.我是这样认识循环的执行的:当i = 0;开始执行之后,j = 0;开始执行,判断出 4 < 7;跳出循环,执行打印出:第1趟排序;接着继续执行 k = 0;打印出 array[0]就是 4 + 空格,然后换行
这个绝对错,但是正确的是怎么样?请各位高手替我解答啊!
2.关于定义bubbleSort这个类的必要性,为什么不直接写在main后面,如
public class BubbleSortTest
{
public static void main(String[] args)
{
int[] array = {4, 7, 8, 9, 3, 2};
for(int i = 0; i < array.length - 1; i++)
{
for(int j = 0; j < array.length - i - 1; j++)
{
if(array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "趟排序");
System.out.print(array[i] + " ");
System.out.println();
}
}
}
执行之后的结果真是惨不忍睹,但我就是看不出来这么写和正确的有何执行上的差异,请高手替我解答,先谢谢各位了!