给我写个冒泡排序
时间: 2023-07-10 21:16:18 浏览: 65
好的,以下是冒泡排序的 Java 代码实现:
```java
public class BubbleSort {
public static void bubbleSort(int[] arr) {
boolean swapped = true;
int lastUnsortedIndex = arr.length - 1;
while (swapped) {
swapped = false;
for (int i = 0; i < lastUnsortedIndex; i++) {
if (arr[i] > arr[i + 1]) {
swap(arr, i, i + 1);
swapped = true;
}
}
lastUnsortedIndex--;
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = {5, 2, 8, 4, 7, 6, 1, 3, 9};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
}
```
在这个实现中,我们使用了一个`swapped`布尔变量来表示数组是否已经排好序。如果数组已经排好序了,那么我们就可以退出循环了。
我们还使用了一个`lastUnsortedIndex`变量来记录最后一个未排序的元素的下标。在每次遍历数组时,我们只需要比较前`lastUnsortedIndex`个元素即可,因为后面的元素已经在上一次遍历中排好序了。每次遍历结束后,我们将`lastUnsortedIndex`减一,因为已经有了一个元素排好序了。
在每次比较相邻的元素时,如果它们的顺序不对,我们就将它们交换位置。如果有任何两个相邻的元素交换了位置,那么我们就将`swapped`设置为`true`。如果没有任何元素交换位置,那么就说明数组已经排好序了,我们就可以退出循环。
最后,我们在`main`方法中创建一个整型数组并调用`bubbleSort`方法进行排序,并使用`Arrays.toString`方法打印出排好序的数组。