This commit is contained in:
krahets
2023-08-19 22:07:27 +08:00
parent 71c7786f51
commit 2e27ad1680
99 changed files with 283 additions and 283 deletions
+4 -4
View File
@@ -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. &nbsp; 算法流程
## 11.4.1 &nbsp; 算法流程
插入排序的整体流程如下:
@@ -248,13 +248,13 @@ comments: true
}
```
## 11.4.2. &nbsp; 算法特性
## 11.4.2 &nbsp; 算法特性
- **时间复杂度 $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. &nbsp; 插入排序优势
## 11.4.3 &nbsp; 插入排序优势
插入排序的时间复杂度为 $O(n^2)$ ,而我们即将学习的快速排序的时间复杂度为 $O(n \log n)$ 。尽管插入排序的时间复杂度相比快速排序更高,**但在数据量较小的情况下,插入排序通常更快**。