(Java)我的Starter Bubble Sort的效率

时间:2015-06-11 18:55:59

标签: java algorithm optimization foreach bubble-sort

我是Java新手,我对优化有疑问。

如果我在IF语句之前声明一个获得x.indexOf(i) + 1值的变量而不是在我的代码中将它放两次(这描绘了第一次调用bubblesort,没有recurency)的速度有多快。

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

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

此外,必须使用ArrayList。

感谢您的回答。 (Haven还没有读过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));       
            }
        } 
    }

1 个答案:

答案 0 :(得分:2)

使用indexOf不正确,如果您的ArrayList x包含多个i值,则排序方法的行为方式不正确。

例如,这种情况:[5, 5, 1]

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

另外,正如tucuxi所提到的,使用indexOf会降低你的程序速度。