我一直在尝试使用Java中的简单静态整数数组来实现Bubble Sort。但是似乎有一些问题。
class BubbleSort {
static int[] a = { 10, 8, 11, -6, 9 };
public void swap(int i, int k) {
if (a[i] == a[k])
return;
int temp;
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
public static void main(String[] args) {
BubbleSort bs = new BubbleSort();
for (int end = a.length - 1; end > 0; end--) {
for (int i = 0; i < end; i++) {
if (a[i] > a[i + 1])
bs.swap(i, i++);
}
}
for (int j = 0; j < a.length; j++)
System.out.println(a[j]);
}
}
我希望输出-6,8,9,10,但实际输出根本没有排序。它显示10,8,-6,9
答案 0 :(得分:4)
您的错误在swap的调用之内。您的代码
bs.swap(i, i++);
与以下相同:
bs.swap(i, i); i=i+1;
但是您当然不想增加i:您想用i和i + 1来称呼它。因此将其更改为
bs.swap(i, i+1);
答案 1 :(得分:2)
问题出在以下陈述中:
$filteredobject['maten0'] = array_filter($array['maten0']);
由于后递增,将使用与bs.swap(i, i++);
相同的值调用bs.swap
,因为后递增将返回前一个值。相反,您应该致电i
。