气泡排序怪异地排序

时间:2018-08-24 21:05:12

标签: java algorithm

我刚尝试编码我的第一个排序算法,但它确实很奇怪。我实际上不知道,这是从哪里来的,但是我认为它必须与数组长度做些事情。因为第一个数字始终等于数组长度。在这里,我希望寄出简单的代码,希望有人帮我调试它。提前非常感谢您!

public class BubbleSort {
    private static void sort(int[] pole) {
        for (int i = 0; i < pole.length; i++) {
            for (int j = 1; j < pole.length - i; j++) {
                if (pole[j-1] > pole[j]) {
                    int tm = pole[j-1];
                    pole[j-1] = j;
                    pole[j] = tm;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] pole = { 65, 210, 41, 23, 3, 2, 4, 78 }; 
        System.out.println("before: " + Arrays.toString(pole));
        sort(pole);
        System.out.println("after:  " + Arrays.toString(pole));
    }
}

1 个答案:

答案 0 :(得分:2)

您的if检查中存在错误。您正在分配值的索引,而不是值本身-pole[j-1] = j;。因此,您应该将其更正为:

...
if(pole[j-1] > pole[j]) {
    tm = pole[j-1];
    //assign the value here
    pole[j-1] = pole[j];
    pole[j] = tm;
}
...