我已经完成了这个冒泡排序算法,但它没有对列表进行完全排序。例如,如果我有数字 10,9,8,7,6,它会将其排序为 9,8,7,6,10 并停在那里。现在,如果您想知道为什么我将这个条件放在其中,if (i + 1 < args.length)
是因为在进行此比较时,由于索引增加到 5,我得到了 IndexOutOfBoundsExceptionif (currentNumber > args[i + 1])
我已经摆脱了我之前做的额外代码,因为我试图让整个列表排序而使算法过于复杂,我接近于计算出排序列表将无限打印的程度,这是我没有做到的当我把它作为一个变异器方法时想要。此外,有些人认为我在那里所做的修改不是冒泡排序,即使算法像冒泡排序一样比较和交换元素。因此,这就是我决定删除之前处理的额外代码的原因。
我的问题是如何对整个列表进行排序?由于到目前为止的算法还没有做到这一点。
package algorithm;
import java.util.Arrays;
public class Algorithm {
/**
* @param args the command line arguments
*/
private static int list[] = {10, 9, 8, 7, 6};
public Algorithm() {
}
public static void main(String[] args) {
Algorithm alg = new Algorithm();
alg.bubblesort(list);
}
public int[] bubblesort(int[] args) {
for (int i = 0; i < args.length; i++) {
int currentNumber = args[i];
if (i + 1 < args.length) {
if (currentNumber > args[i + 1]) {
args[i] = args[i + 1];
args[i + 1] = currentNumber;
}
}
}
System.out.println(Arrays.toString(args));
return args;
}
}