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

实现冒泡排序的java函数

发布时间:2023-06-20 00:07:19

冒泡排序,是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就将它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

在Java中,可以通过以下函数实现冒泡排序:

public static void bubbleSort(int[] arr) {
    int temp = 0;
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

该函数的参数是一个整型数组,它的返回值为void。函数中主要使用了两个嵌套循环来进行冒泡排序。 个循环控制排序的轮数,一共需要比较n-1轮;第二个循环控制每一轮比较的次数,每一轮比较的次数为n-1-i次。在每一轮比较中,如果相邻的两个元素顺序错误,则交换它们的位置。

其中,变量temp用来暂存需要交换的元素。

通过测试可以验证同时也可以优化

public static void bubbleSort(int[] arr) {
    int temp = 0;
    boolean flag = false;
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                flag = true;
            }
        }
        if (!flag){
            break;
        }else{
            flag = false;
        }
    }
}

在 层循环的时候,在每一轮排序之后都检测一下是否有数据交换的,如果没有交换数据说明已经排好序了,就直接结束循环;否则就继续进行下一轮排序。因为我们发现如果有一段数据已经排好序了,那么它后面的数据不需要再与前面的数据进行比较了。