我是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));
}
}
}
答案 0 :(得分:2)
使用indexOf
不正确,如果您的ArrayList x
包含多个i
值,则排序方法的行为方式不正确。
例如,这种情况:[5, 5, 1]
运行程序后,返回[5, 5, 1]
另外,正如tucuxi所提到的,使用indexOf
会降低你的程序速度。