《冒泡排序算法》
《算法与数据结构:冒泡排序算法》
冒泡排序算法
算法简介
冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素列表,比较相邻的元素,并在需要时交换它们的位置。每遍历一次列表,至少有一个元素会被移至其正确的位置,这个过程类似于气泡从水底升到水面的过程,因此得名 “冒泡排序”。
关键特点
- 简单直观:易于理解和实现。
- 效率较低:对于大量元素的列表,其性能不如更复杂的排序算法。
- 稳定性:相等的元素在排序后保持原有顺序。
算法工作原理
- 比较和交换:从列表的开始处开始,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。
- 重复过程:对列表的每一对相邻元素执行步骤 1,直到列表的末尾。这完成了列表的一次完整遍历。
- 重复遍历:重复步骤 1 和 2,每次遍历都会减少最后一个比较的元素。
- 完成排序:当没有更多元素需要比较时,列表排序完成。
表格演示
为了展示冒泡排序算法的步骤,我会使用一个简单的例子,并通过表格的形式来展示每一步的操作。假设我们有一个数列 [5, 3, 8, 4, 2],我们将按照冒泡排序的规则对其进行排序。以下是排序的详细步骤:
初始数列: | 5 | 3 | 8 | 4 | 2 |
第一轮比较:
- 比较 5 和 3,交换位置,因为 5 > 3
- 比较 5 和 8,不交换,因为 5< 8
- 比较 8 和 4,交换位置,因为 8 > 4
- 比较 8 和 2,交换位置,因为 8>2
| 3 | 5 | 4 | 2 | 8 |
第二轮比较:
- 比较 3 和 5,不交换,因为 3< 5
- 比较 5 和 4,交换位置,因为 5>4
- 比较 5 和 2,交换位置,因为 5> 2
- 此轮不再与 8 比较,因为 8 已经是最大的了
| 3 | 4 | 2 | 5 | 8 |
第三轮比较:
- 比较 3 和 4,不交换,因为 3< 4
- 比较 4 和 2,交换位置,因为 4 > 2
- 此轮不再与 5 和 8 比较
| 3 | 2 | 4 | 5 | 8 |
第四轮比较:
- 比较 3 和 2,交换位置,因为 3 > 2
- 此轮不再与 4,5 和 8 比较
| 2 | 3 | 4 | 5 | 8 |
结束:
- 所有元素均已正确排序
图画演示
创建一个演示数组【3,5,1,2,4】,数组长度为 5,数组表示为 nums[0,5)
左闭右开区间。
动画 GIF 演示
Java 代码实现
1 | public class BubbleSort { |
Java 范型实现
1 | public class BubbleSort { |