我正在尝试实现冒泡排序,但它不起作用!帮我找到问题。
码:
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < arraylength - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
}
}
安慰:
输入arr:5 1 5 4 7 8 7 7 2 8
输出:1 4 5 2 5 7 7 7 8 8
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
System.out.println();
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
for(int i=0;i<array.length;++i){
System.out.print(" "+array[i]);
}
}
}
输入arr:7 7 4 1 2 9 6 4 9 6
输出:1 2 4 4 6 6 7 7 9 9
它有效,但有时:
输入arr:5 2 2 3 9 6 7 7 0 6
输出:2 2 3 0 5 6 6 7 7 9
最佳答案
更改
for (int i =0; i<arraylength; i++) {
至
for (int i =0; i<array.length; i++) {
外循环需要为数组中的每个元素运行一次,并且您不能使用
arraylength
变量执行此操作,因为您要减小其值,即在第一次迭代后,arraylength
不再等于array.length
。