(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
会减慢您的程序。
我是 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
会减慢您的程序。