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

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

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

当谈到简单的排序算法时,冒泡排序(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趟:[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]

冒泡排序的性能

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

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

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

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

总结

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

目录
相关文章
|
5天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
34 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
3天前
|
缓存 算法 Java
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
|
3天前
|
NoSQL 算法 Java
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
|
5天前
|
搜索推荐 算法 Java
sort-01-bubble sort 冒泡排序算法详解
这是一个关于排序算法的系列文章摘要。作者整理了10种不同的排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序和大文件外部排序。文章详细介绍了冒泡排序的工作原理、流程,并提供了代码实现,强调了在实现中考虑的改进点,如统一接口、实用性增强和日志输出。此外,还提供了一个排序接口和工具类以方便使用,并通过测试代码和日志展示了排序过程。整个系列旨在帮助读者理解和掌握排序算法。相关代码已开源在GitHub。
|
5天前
|
存储 算法 Java
wtf?java的冒泡排序还可以这样写
wtf?java的冒泡排序还可以这样写
9 1
|
5天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
5天前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
13 0
|
5天前
|
机器学习/深度学习 数据采集 算法
使用 Java 实现机器学习算法
【4月更文挑战第19天】Java在数据驱动时代为机器学习提供支持,具备丰富的数学和数据结构库,适用于实现线性回归、决策树、SVM和随机森林等算法。实现时注意数据预处理、模型选择、评估指标和可视化。利用Java的库和编程能力可构建高效模型,但需按问题需求选择合适技术和优化方法。
|
5天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
搜索推荐 Java
冒泡排序-选择排序-插入排序-快速排序(java版实现)(下)
排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。
101 0
冒泡排序-选择排序-插入排序-快速排序(java版实现)(下)
http://www.vxiaotou.com