• 简单而经典:Java中的冒泡排序算法详解


    当谈到简单的排序算法时,冒泡排序(Bubble Sort)通常是其中之一。虽然它不是最高效的排序算法之一,但它的简单性和易于理解使它成为学习排序算法的良好起点。在本文中,我们将详细介绍Java中的冒泡排序。

    冒泡排序的基本原理

    冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。其基本原理如下:

    1. 从数组的第一个元素开始,比较相邻的两个元素。

    2. 如果前一个元素大于后一个元素(升序排序),则交换它们的位置。

    3. 步骤1和步骤2,直到遍历整个数组。

    4. 上步骤,每次遍历都将最大的元素“冒泡”到数组的末尾。

    5. 复以上步骤,但不包括已排序的最大元素,直到整个数组排序完成。

    -2023-08-22-0636.png

    Java实现冒泡排序

    下面是一个简单的Java代码示例,演示了如何使用冒泡排序对一个整数数组进行排序:

    public static void main(String[] args) {
        int[] arr = new int[]{5,7,4,3,6,2};
        bubbleSort(arr);
        System.out.println("冒泡排序完的数组:"+Arrays.toString(arr));
    
    }
    
    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        //外部循环控制排序的趟数。冒泡排序的每一趟会将最大的元素"冒泡"到数组的末尾,因此需要执行 n-1 趟,其中 n 是元素的总数
        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;
                }
            }
            System.out.println("第"+(i+1)+"趟:"+Arrays.toString(arr));
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    输出的结果:

    第1趟:[5, 4, 3, 6, 2, 7]
    第2趟:[4, 3, 5, 2, 6, 7]
    第3趟:[3, 4, 2, 5, 6, 7]
    第4趟:[3, 2, 4, 5, 6, 7]
    第5趟:[2, 3, 4, 5, 6, 7]
    冒泡排序完的数组:[2, 3, 4, 5, 6, 7]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    冒泡排序的性能

    冒泡排序的时间复杂度是 O ( n 2 ) O(n^2) O(n2),其中n是要排序的元素个数。由于其性能较差,通常不建议在大型数据集上使用冒泡排序。然而,冒泡排序仍然有其价值:

    • 学习排序算法:冒泡排序是理解排序算法的良好起点,它的实现非常简单,有助于初学者理解排序的基本概念。

    • 小型数据集:对于小型数据集,冒泡排序可能是一个合理的选择,因为其实现简单且易于编写。

    在Java JDK中,冒泡排序通常不会直接用于实际的生产代码中。Java提供了更高效的排序方法,例如Arrays.sort()用于对数组进行排序,以及Collections.sort()用于对集合进行排序,这些方法使用了更高效的排序算法,如快速排序和归并排序。

    总结

    总之,冒泡排序是一个简单而易于理解的排序算法,它在学习排序算法的过程中具有重要作用。然而,在实际应用中,Java JDK提供了更高效的排序方法,推荐使用这些方法来提高性能。冒泡排序的价值在于它对排序算法的基本理解,而在实际项目中,通常需要更高效的排序算法来应对大规模数据的排序需求。

  • 相关阅读:
    Cause: compileSdkVersion is not specified. Please add it to build.gradle
    UI设计软件有哪些好用和免费的吗?
    django regroup对象是外键时无法正常使用
    ES6原生组件在页面频繁操作,导致页面崩溃,内存使用无异常。记一次奇葩BUG导致的页面崩溃
    为.NET打开新大门:OpenVINO.NET开源项目全新发布
    ToDoList待办事件(Vue实现)详解
    通俗理解图神经网络GNN
    EF Core 配置模型
    同花顺股票交易接口的端口限速
    数字档案管理系统单机版功能
  • 原文地址:https://blog.csdn.net/weixin_44002151/article/details/133254187