(Java) 我的入门冒泡排序效率

(Java) Efficiency in my Starter Bubble Sort

我是 Java 的新手,我有一个关于优化的问题。

如果我在我的 IF 语句之前声明一个获取 x.indexOf(i) + 1 值的变量,而不是在下面的代码中只将它放置两次(它描述了冒泡排序的第一次调用,没有重复性)。

是否值得实际创建一个 j 变量来保存 x.indexOf(i) +1 而不是让函数再次 运行 一次?

我也认为我在 IF 中的第一个条件有点缺陷,是否可以让 i 在 foreach 中从 i+1 值开始?

另外必须使用 ArrayList。

感谢您的回答。 (还没有读过 Java 中的编码标准,所以我猜它看起来很难看)

public static void bubbleOnce(ArrayList<Integer> x) {
        for(int i : x) {
            if((x.indexOf(i) != x.size()-1) && i > x.get(x.indexOf(i) + 1)) {
             Collections.swap(x, x.indexOf(i), (x.indexOf(i) + 1));       
            }
        } 
    }

使用 indexOf 是不正确的,如果您的 ArrayList x 包含多个 i 的值,您的排序方法将出现错误。

比如这个案例:[5, 5, 1]

在 运行 你的程序之后,return [5, 5, 1]

此外,如 tucuxi 所述,使用 indexOf 会减慢您的程序。