public class MyBubbleSort {
public static void bubbleSort(int[] a, int n) {
int i, j, temp;
for (i = 0; i <= (n-2); i++) {
for (j = i + 1; j <= (n-1); j++) {
if (a[j] < a[i]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
}
当我进行调试时,它给了我一个排序数组,但我只想100%确定。
答案 0 :(得分:0)
你可以稍微整理一下代码:
sort(int[] a, int n)
。MyBubbleSort方法应该实现所述接口而不是静态的。
int i
和j
应在相应的for
声明中声明。
temp
应在内部if
内声明。答案 1 :(得分:0)
你正在做一个正确的冒泡排序!在“if”语句中,如果两个相邻值的排序不正确,则表示您正在正确交换它们。这是冒泡排序的原则:重复此过程,直到您的数组正确排序。 https://www.youtube.com/watch?v=lyZQPjUT5B4
然而,你在代码中做了一些奇怪的事情!正如zapl在评论中所说,你不需要这个“n”参数,因为你可以简单地在你的方法中获得数组的大小。
也更喜欢使用“&lt; length”,“&lt; length - 1”而不是你的&lt; =如果你认为的话更直观
public static void bubbleSort(int[] tab) {
int n = tab.length ;
for (int i = 0; i < n-1; i++) {
for (int j = i + 1; j < n ; j++) {
if (tab[j] < tab[i]) {
int temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}
}
}
}