我正在尝试实现冒泡排序,但它不起作用!帮我找到问题。

码:

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

10-08 14:35