java冒泡排序算法代码

admin 26 0

**Java中实现冒泡排序算法的代码详解**

在编程中,排序算法是一种常见且重要的算法,冒泡排序(Bubble Sort)是其中最简单直观的一种排序算法,它的工作原理是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

下面是一个使用Java语言实现的冒泡排序算法的代码示例:

public class BubbleSort {

    // 冒泡排序函数
    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) { // 外层循环控制排序趟数
            for (int j = 0; j < n - i - 1; j++) { // 内层循环控制每一趟排序多少次
                // 如果前一个元素大于后一个元素,则交换它们
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    // 测试冒泡排序函数
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        System.out.println("排序前的数组:");
        printArray(arr);

        bubbleSort(arr);

        System.out.println("\n排序后的数组:");
        printArray(arr);
    }

    // 辅助函数,用于打印数组
    public static void printArray(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n; ++i)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
}

代码解释:

1. `bubbleSort` 方法是冒泡排序的核心实现部分,它接收一个整数数组 `arr` 作为参数,并对其进行排序。

2. 外层循环 `for (int i = 0; i < n - 1; i++)` 控制排序的趟数,由于每一趟排序都会将当前未排序部分的最大值“冒泡”到已排序部分的末尾,所以总共需要 `n-1` 趟排序(`n` 是数组的长度)。

3. 内层循环 `for (int j = 0; j < n - i - 1; j++)` 控制每一趟排序需要比较的次数,由于每一趟排序都会将一个最大值“冒泡”到末尾,所以下一趟排序时就不需要再比较这个最大值了,因此内层循环的边界是 `n-i-1`。

4. 在内层循环中,通过比较相邻的两个元素 `arr[j]` 和 `arr[j + 1]` 的大小,如果 `arr[j]` 大于 `arr[j + 1]`,则交换它们的位置。

5. `main` 方法是程序的入口点,它首先定义了一个待排序的数组 `arr`,并调用 `printArray` 方法打印出排序前的数组,然后调用 `bubbleSort` 方法对数组进行排序,最后再次调用 `printArray` 方法打印出排序后的数组。

6. `printArray` 方法是一个辅助方法,用于打印整数数组的内容,它接收一个整数数组作为参数,并使用一个循环遍历数组中的每个元素,将它们打印到控制台上。

冒泡排序的时间复杂度是 O(n^2),其中 n 是待排序数组的长度,虽然冒泡排序的时间复杂度较高,但由于其实现简单直观,因此在一些对时间复杂度要求不高的场合仍然被广泛使用。