跳到主要内容

编写Java代码实现冒泡排序 ?

参考答案:

下面是一个Java实现的冒泡排序算法示例:

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(arr);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    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]) {
                    // 交换 arr[j] 和 arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

在这段代码中,我们定义了一个bubbleSort方法来实现冒泡排序。该方法接收一个整数数组arr作为参数,并通过两个嵌套的for循环来比较和交换元素的位置。

外层循环i控制遍历的轮数,内层循环j负责在每一轮中进行相邻元素的比较和交换。通过比较arr[j]arr[j + 1]的大小,如果arr[j]arr[j + 1]大,则交换这两个元素的位置。

在每次内层循环结束后,当前未排序部分的最大值(在这个例子中假设是升序排序)会被“冒泡”到正确的位置(即数组的末尾)。随着外层循环的继续,未排序部分的长度逐渐减少,直到整个数组排序完成。

最后,在main方法中,我们创建了一个待排序的数组arr,调用bubbleSort方法进行排序,然后遍历并打印排序后的数组。

注意:冒泡排序的时间复杂度在最坏和平均情况下都是O(n^2),其中n是数组的长度。虽然实现简单,但在处理大规模数据时效率较低。在实际应用中,如果数据规模较大,通常推荐使用更高效的排序算法。