java - 为什么这个冒泡排序不能通过使用简单的静态整数数组来工作?

标签 java algorithm sorting bubble-sort

我一直在尝试在 Java 中使用简单的静态整数数组来实现冒泡排序。不过好像有点问题。

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

最佳答案

你的错误在 swap 的调用中。你的代码

bs.swap(i, i++);

等同于:

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

但是你不想增加 i,当然:你想用 i 和 i+1 调用它。所以改成

bs.swap(i, i+1);

关于java - 为什么这个冒泡排序不能通过使用简单的静态整数数组来工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237236/

相关文章:

java - 无法播放使用 XUGGLER 编码的音频

java - 使用正则表达式从查询中获取表名

java - 使用java的点对点应用程序

algorithm - 查找具有最小边交叉分区的图分区

c++ - 生成具有自定义分布的序列

c# - Lucene.Net 根据与点的距离排序结果

java - 在@ManyToOne 端合并托管实体

c# - 调用归并排序 C#

javascript - 更改键后如何移动数组中的对象

java - 具有适当终止条件的 java.lang.StackOverflowError 的原因是什么?