我刚尝试编码我的第一个排序算法,但它确实很奇怪。我实际上不知道,这是从哪里来的,但是我认为它必须与数组长度做些事情。因为第一个数字始终等于数组长度。在这里,我希望寄出简单的代码,希望有人帮我调试它。提前非常感谢您!
public class BubbleSort {
private static void sort(int[] pole) {
for (int i = 0; i < pole.length; i++) {
for (int j = 1; j < pole.length - i; j++) {
if (pole[j-1] > pole[j]) {
int tm = pole[j-1];
pole[j-1] = j;
pole[j] = tm;
}
}
}
}
public static void main(String[] args) {
int[] pole = { 65, 210, 41, 23, 3, 2, 4, 78 };
System.out.println("before: " + Arrays.toString(pole));
sort(pole);
System.out.println("after: " + Arrays.toString(pole));
}
}
答案 0 :(得分:2)
您的if
检查中存在错误。您正在分配值的索引,而不是值本身-pole[j-1] = j;
。因此,您应该将其更正为:
...
if(pole[j-1] > pole[j]) {
tm = pole[j-1];
//assign the value here
pole[j-1] = pole[j];
pole[j] = tm;
}
...