public class BubbleSort {
public static void main(String[] args) {
int[] arr1 = {2, 34, 65, 65, 10, 32, 45};
int[] arr2 = {2, 65, 65, 10, 32, 45};
int[] arr3 = {2, 34, 65, 65, 32, 45};
int[] arr4 = {2, 12, 15, 34, 65, 65, 32, 45};
int[] arr5 = {2, 34, 65, 65, 20, 32, 45};
bubbleSort(arr1, 1);
bubbleSort(arr2, 2);
bubbleSort(arr3, 3);
bubbleSort(arr4, 4);
bubbleSort(arr5, 5);
}
public static void bubbleSort(int[] arr, int id) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
System.out.println("This is Arr " + id + " " + arr[i]);
}
}
}
我在java中的冒泡排序实现中遇到了一个问题,我在升序模式下排序,但是正如你所看到的,当你运行bubbleSort(arr1)
和bubbleSort(arr5)
时,它返回了奇怪的值,这不是我所期望的结果。
- 结果**
2条答案
按热度按时间xytpbqjk1#
你的函数是正确的,但是你的print是错误的,你命令了你的arr5你应该在所有迭代之后打印他,你的println在for之一里面,而它仍然在命令。
这是我把println放在函数外的一个输出。
Code
格式不对但我现在能做的就是这个
y53ybaqx2#
你必须考虑BubbleSort是如何工作的,如果
j
位置的元素大于j+1
位置的元素,那么你要检查if
条件,如果不满足这个条件,元素就不会交换。你的条件确保,在每一次
i
迭代之后,最大的元素在数组的末尾。当你在每次迭代中检查你可能遇到的数组的第
i
个元素时,看看你的第一个数组,下面是每次迭代的步骤:在
i=1
处,arr
的元素是34
的原因是,当检查时,您比较的是假的34 > 65
,因此34
停留在位置1
。