mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-10 14:36:06 +00:00
build
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 11.4. 插入排序
|
||||
# 11.4 插入排序
|
||||
|
||||
「插入排序 Insertion Sort」是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非常相似。
|
||||
|
||||
@@ -14,7 +14,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:单次插入操作 </p>
|
||||
|
||||
## 11.4.1. 算法流程
|
||||
## 11.4.1 算法流程
|
||||
|
||||
插入排序的整体流程如下:
|
||||
|
||||
@@ -248,13 +248,13 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 11.4.2. 算法特性
|
||||
## 11.4.2 算法特性
|
||||
|
||||
- **时间复杂度 $O(n^2)$ 、自适应排序** :最差情况下,每次插入操作分别需要循环 $n - 1$ , $n-2$ , $\cdots$ , $2$ , $1$ 次,求和得到 $\frac{(n - 1) n}{2}$ ,因此时间复杂度为 $O(n^2)$ 。在遇到有序数据时,插入操作会提前终止。当输入数组完全有序时,插入排序达到最佳时间复杂度 $O(n)$ 。
|
||||
- **空间复杂度 $O(1)$ 、原地排序** :指针 $i$ , $j$ 使用常数大小的额外空间。
|
||||
- **稳定排序**:在插入操作过程中,我们会将元素插入到相等元素的右侧,不会改变它们的顺序。
|
||||
|
||||
## 11.4.3. 插入排序优势
|
||||
## 11.4.3 插入排序优势
|
||||
|
||||
插入排序的时间复杂度为 $O(n^2)$ ,而我们即将学习的快速排序的时间复杂度为 $O(n \log n)$ 。尽管插入排序的时间复杂度相比快速排序更高,**但在数据量较小的情况下,插入排序通常更快**。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user