mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-11 06:56:06 +00:00
build
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 11.3. 冒泡排序
|
||||
# 11.3 冒泡排序
|
||||
|
||||
「冒泡排序 Bubble Sort」通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。
|
||||
|
||||
@@ -31,7 +31,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:利用元素交换操作模拟冒泡 </p>
|
||||
|
||||
## 11.3.1. 算法流程
|
||||
## 11.3.1 算法流程
|
||||
|
||||
设数组的长度为 $n$ ,冒泡排序的步骤为:
|
||||
|
||||
@@ -277,7 +277,7 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 11.3.2. 效率优化
|
||||
## 11.3.2 效率优化
|
||||
|
||||
我们发现,如果某轮“冒泡”中没有执行任何交换操作,说明数组已经完成排序,可直接返回结果。因此,可以增加一个标志位 `flag` 来监测这种情况,一旦出现就立即返回。
|
||||
|
||||
@@ -559,7 +559,7 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 11.3.3. 算法特性
|
||||
## 11.3.3 算法特性
|
||||
|
||||
- **时间复杂度为 $O(n^2)$ 、自适应排序** :各轮“冒泡”遍历的数组长度依次为 $n - 1$ , $n - 2$ , $\cdots$ , $2$ , $1$ ,总和为 $\frac{(n - 1) n}{2}$ 。在引入 `flag` 优化后,最佳时间复杂度可达到 $O(n)$ 。
|
||||
- **空间复杂度为 $O(1)$ 、原地排序**:指针 $i$ , $j$ 使用常数大小的额外空间。
|
||||
|
||||
Reference in New Issue
Block a user