欢迎访问宙启技术站
智能推送

在Java中实现冒泡排序的排序函数(ImplementingSortFunctionforBubbleSortinJava)

发布时间:2023-06-05 15:07:30

冒泡排序是一种基本的排序算法,其基本思想是对未排序的元素进行两两比较,将较大的元素交换到后面,直到所有元素都排序完成。在Java中实现冒泡排序的排序函数,主要分为以下几个步骤:

1. 首先需要定义一个函数,该函数接受一个整型数组作为参数,并返回一个排序后的数组。定义函数如下:

public static int[] bubbleSort(int[] arr) {}

2. 在函数体内,需要使用双重循环来完成元素的比较和交换操作。外部循环控制比较和交换的次数,内部循环实现两两比较和交换操作。代码如下:

public static int[] bubbleSort(int[] arr) {

    int len = arr.length;

    for (int i = 0; i < len - 1; i++) { // 外循环控制比较和交换的次数

        for (int j = 0; j < len - i - 1; j++) { // 内循环实现两两比较和交换操作

            if (arr[j] > arr[j + 1]) { // 如果前一个元素大于后一个元素,则交换它们

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

    return arr;

}

3. 在排序过程中,当没有元素发生交换时,说明数组已经排好序了,可以提前退出循环,优化排序效率。可以使用一个标志位来判断是否发生了交换。代码如下:

public static int[] bubbleSort(int[] arr) {

    int len = arr.length;

    boolean flag = false; // 标志位

    for (int i = 0; i < len - 1; i++) {

        for (int j = 0; j < len - i - 1; j++) {

            if (arr[j] > arr[j + 1]) {

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

                flag = true; // 标记发生了交换

            }

        }

        if (!flag) { // 如果没有发生交换,提前退出循环

            break;

        } else {

            flag = false; // 重置标志位

        }

    }

    return arr;

}

4. 最后,在主函数中调用排序函数,并打印排序后的结果。代码如下:

public static void main(String[] args) {

    int[] arr = {3, 6, 1, 8, 2, 0, 7, 4, 5, 9};

    int[] sortedArr = bubbleSort(arr);

    System.out.println(Arrays.toString(sortedArr));

}

完整代码如下:

public static int[] bubbleSort(int[] arr) {

    int len = arr.length;

    boolean flag = false;

    for (int i = 0; i < len - 1; i++) {

        for (int j = 0; j < len - i - 1; j++) {

            if (arr[j] > arr[j + 1]) {

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

                flag = true;

            }

        }

        if (!flag) {

            break;

        } else {

            flag = false;

        }

    }

    return arr;

}

public static void main(String[] args) {

    int[] arr = {3, 6, 1, 8, 2, 0, 7, 4, 5, 9};

    int[] sortedArr = bubbleSort(arr);

    System.out.println(Arrays.toString(sortedArr));

}