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

标签 java algorithm optimization foreach 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]

运行程序后,返回[5, 5, 1]

此外,如 tucuxi 所述,使用 indexOf 会降低程序速度。

关于java - (Java) 我的入门冒泡排序的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30789173/

相关文章:

java - Android 中未获取 Base64 图像数据

java - Spring webservicetemplate jar 与 Axis2 冲突问题

java - 分页使前端层崩溃。

python - Python 中的字符串覆盖优化

python - 快速将 id 分配给给定的位组合

java - 在 H2 数据库中找不到函数 "TO_DATE"

c++ - 这个算法的复杂度是多少?

performance - 是否所有算法都以 n 为基数(例如 : k^n) of the same time complexity?

algorithm - 找到向量中的最大距离

C99条件返回值