Java 实现冒泡排序算法:原理、代码及特点全解析
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复地遍历要排序的列表,比较相邻的元素并交换它们的位置,如果它们的顺序错误。这个过程会重复进行,直到没有需要交换的元素为止,也就是说列表已经排序完成。 下面是一个用Java实现的冒泡排序算法的示例: ```java public class BubbleSort { public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; bubbleSort(arr); System.out.println("Sorted array:"); printArray(arr); } // 冒泡排序算法 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; } } } } // 打印数组 public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } } ``` ### 代码解释: 1. **`main`方法**:初始化一个整数数组并调用`bubbleSort`方法对其进行排序,然后打印排序后的数组。 2. **`bubbleSort`方法**:这是冒泡排序的核心部分。外层循环控制遍历的次数,内层循环负责比较和交换相邻元素。如果前一个元素大于后一个元素,则交换它们的位置。 3. **`printArray`方法**:用于打印数组中的元素。 ### 冒泡排序的特点: - **时间复杂度**:最坏情况下为O(n^2),平均情况也为O(n^2)。 - **空间复杂度**:O(1),因为它是原地排序算法。 - **稳定性**:冒泡排序是稳定的排序算法,即不会改变相同元素的相对顺序。 尽管冒泡排序在实际应用中并不常用,因为它的效率较低,但它的实现简单且易于理解,适合作为学习排序算法的基础。 ######[AI写代码神器 | 602点数解答 | 2024-11-26 16:53:59]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)337
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1232
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)382
- 探秘 Linux sensors 原理:从硬件读取到数据监测的全面剖析(GPT | 407点数解答 | 2024-10-21 16:06:25)275
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)312
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)331
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)347
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)499
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)388
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)352