为什么这个bubbleort通过使用简单的静态整数数组不起作用?

时间:2019-05-21 11:25:08

标签: java algorithm sorting bubble-sort

我一直在尝试使用Java中的简单静态整数数组来实现Bubble Sort。但是似乎有一些问题。

class BubbleSort {
    static int[] a = { 10, 8, 11, -6, 9 };

    public void swap(int i, int k) {
        if (a[i] == a[k])
            return;

        int temp;
        temp = a[i];
        a[i] = a[k];
        a[k] = temp;

    }

    public static void main(String[] args) {
        BubbleSort bs = new BubbleSort();
        for (int end = a.length - 1; end > 0; end--) {
            for (int i = 0; i < end; i++) {
                if (a[i] > a[i + 1])
                    bs.swap(i, i++);
            }
        }
        for (int j = 0; j < a.length; j++)
            System.out.println(a[j]);

    }
}

我希望输出-6,8,9,10,但实际输出根本没有排序。它显示10,8,-6,9

2 个答案:

答案 0 :(得分:4)

您的错误在swap的调用之内。您的代码

bs.swap(i, i++);

与以下相同:

bs.swap(i, i); i=i+1;

但是您当然不想增加i:您想用i和i + 1来称呼它。因此将其更改为

bs.swap(i, i+1);

答案 1 :(得分:2)

问题出在以下陈述中:

$filteredobject['maten0'] = array_filter($array['maten0']);

由于后递增,将使用与bs.swap(i, i++); 相同的值调用bs.swap,因为后递增将返回前一个值。相反,您应该致电i