1 | int[] numbers = { 5, 8, 14, 1, 5678 };
2 | int tempVar;
3 | for (int i = 0; i < numbers.length; i++)
4 | {
5 | for(int j = 0; j < numbers.length; j++)
6 | {
7 | if(numbers[i] > numbers[j + 1])
8 | {
9 | tempVar = numbers [j + 1];
10 | numbers [j + 1]= numbers [i];
11 | numbers [i] = tempVar;
12 | }
13 | }
14 | }
15 | for (int i = 0; i < numbers.length; i++)
16 | {
17 | System.out.println(numbers[i].toString());
18 | }
我是一个自学Java的新手。我在冒泡排序方面遇到了一些问题。
我的问题出现在第5
行到第7
行。据我理解,外部循环从i=0
开始,然后内部循环从j=0
开始,并且每次递增1
直至j=4
,此时外部循环将向前推进,i=1
。因此,在外部循环推进到i=1
之前,应该发生以下情况。
当i=0
时,数字i=5
。然后内部循环运行:
当j=0
时,数字j=5
。
当j=1
时,数字j=8
。
当j=2
时,数字j=14
。
当j=3
时,数字j=1
。
当j=4
时,数字j=5678
。
然后,如果数字i大于数字j+1
,则交换这两个数字。
然后我们比较5
和5
,然后5
和8
,然后5
和14
,然后5
和1
,最后是5
和5678
,这与冒泡排序的比较方式不同(它将5
与8
进行比较,然后将8
与14
进行比较,然后将14
与1
进行比较,最后将1
与5678
进行比较)。
我无法理解第5
行到第7
行中的代码如何导致以应该在冒泡排序中出现的方式比较两个相邻的数字。有人能指出我哪里想错了吗?
如果有人能更详细地解释第5
行到第7
行的工作原理,那就太好了。如果能提供逐步分解,那就更好了。谢谢!