我不希望连续两次for循环调用,改进下方法
时间: 2023-08-10 12:31:16 浏览: 118
当然可以,以下是一个使用 `while` 循环实现的冒泡排序Java代码示例:
```java
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 5, 2, 1, 8, 4 };
System.out.println("排序前的数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
bubbleSort(arr);
System.out.println("\n排序后的数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void bubbleSort(int[] arr) {
int temp;
boolean swapped = true;
int i = 0;
while (swapped) {
swapped = false;
for (int j = 1; j < arr.length - i; j++) {
if (arr[j - 1] > arr[j]) {
temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
swapped = true;
}
}
i++;
}
}
}
```
该代码与前面的代码相比,主要是使用了 `while` 循环来避免连续两次 `for` 循环的调用。在 `while` 循环中,使用一个 `swapped` 标志来判断数组是否已经排序完成,同时使用变量 `i` 来记录已经排好序的元素个数,从而避免重复比较已经排好序的元素。
阅读全文