插入排序: 修改插入排序思想描述 (#322)

* 插入排序: 修改插入排序思想描述

* Update insertion_sort.md

---------

Co-authored-by: Yudong Jin <krahets@163.com>
This commit is contained in:
方圆 2023-02-04 18:38:52 +08:00 committed by GitHub
parent 6fdf3189a4
commit ea6a43b2b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,9 +6,9 @@ comments: true
「插入排序 Insertion Sort」是一种基于 **数组插入操作** 的排序算法。
「插入操作」的思想:选定数组的某个元素为基准数 `base` ,将 `base` 与其左边的元素依次对比大小,并“插入”到正确位置。
「插入操作」原理:选定某个待排序元素为基准数 `base`,将 `base` 与其左侧已排序区间元素依次对比大小,并插入到正确位置。
然而,由于数组在内存中的存储方式是连续的,我们无法直接把 `base` 插入到目标位置,而是需要将从目标位置到 `base` 之间的所有元素向右移动一位(本质上是一次数组插入操作)
回忆数组插入操作,我们需要将从目标索引到 `base` 之间的所有元素向右移动一位,然后再将 `base` 赋值给目标索引
![insertion_operation](insertion_sort.assets/insertion_operation.png)
@ -16,9 +16,9 @@ comments: true
## 11.3.1. 算法流程
1. 第 1 轮先选取数组的 **第 2 个元素**`base` ,执行「插入操作」后, **数组前 2 个元素已完成排序**
2. 第 2 轮选取 **第 3 个元素**`base` ,执行「插入操作」后, **数组前 3 个元素已完成排序**
3. 以此类推……最后一轮选取 **数组尾元素**`base` ,执行「插入操作」后 **所有元素已完成排序**
1. 第 1 轮先选取数组的 **第 2 个元素**`base` ,执行「插入操作」后,**数组前 2 个元素已完成排序**。
2. 第 2 轮选取 **第 3 个元素**`base` ,执行「插入操作」后,**数组前 3 个元素已完成排序**。
3. 以此类推……最后一轮选取 **数组尾元素**`base` ,执行「插入操作」后**所有元素已完成排序**
![insertion_sort](insertion_sort.assets/insertion_sort.png)