【发布时间】:2016-08-30 03:16:15
【问题描述】:
我遇到了一个非常混乱的情况,我编写了这个 BubbleSort 程序,它运行得很好。输出正确:
public class BubbleSortInput {
private static void Sorting(int[] intArray)
{
int i, temp=0;
int n = intArray.length;
for(i=0; i < n - 1; i++)
{
for(int j = 0; j < n-i-1; j++)
{
if(intArray[i]>intArray[i+1])
{
temp = intArray[i+1];
intArray[i] = intArray[i+1];
intArray[i] = temp;
}
}
}
}
public static void main(String[] args) {
int array[] = {1,5,65,34,76,234};
Sorting(array);
for(int k = 0; k < array.length; k++)
{
System.out.println(array[k]);
}
}
}
但是,我尝试在 main 方法中,在另一个类中编写基本相同的代码:
class BubbleSort {
public static void main(String[] args) {
int numbers[] = {12,43,65,12,65,92,32,54};
int i,temp=0;
for(i=0; i < numbers.length-1; i++)
{
for(int j = 0; j < numbers.length-i-1; j++)
{
if(numbers[i]>numbers[i+1])
{
temp = numbers[i+1];
numbers[i] = numbers[i+1];
numbers[i]= temp;
}
}
}
for(i=0;i<numbers.length;i++)
{
System.out.println(numbers[i]);
}
}
}
我在第二个文件上得到的输出完全错误,即使我使用了几乎相同的代码,有人可以解释一下吗?
Output:
12
43
12
12
65
32
32
54
【问题讨论】:
-
内部循环应该使用'j'作为索引而不是'i'
-
鉴于
intArray[i] = intArray[i+1]和numbers[i] = numbers[i+1]都分配了错误的方式,我看不出它们中的任何一个如何工作。
标签: java intellij-idea