mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-11 15:06:07 +00:00
build
This commit is contained in:
@@ -43,9 +43,7 @@ comments: true
|
||||
2. 同理,对剩余 $n - 1$ 个元素执行「冒泡」,可将第二大元素交换至正确位置,因而待排序元素只剩 $n - 2$ 个。
|
||||
3. 以此类推…… **循环 $n - 1$ 轮「冒泡」,即可完成整个数组的排序**。
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 冒泡排序流程 </p>
|
||||

|
||||
|
||||
=== "Java"
|
||||
|
||||
|
||||
@@ -10,9 +10,7 @@ comments: true
|
||||
|
||||
回忆数组插入操作,我们需要将从目标索引到 `base` 之间的所有元素向右移动一位,然后再将 `base` 赋值给目标索引。
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 插入操作 </p>
|
||||

|
||||
|
||||
## 11.3.1. 算法流程
|
||||
|
||||
@@ -20,9 +18,7 @@ comments: true
|
||||
2. 第 2 轮选取 **第 3 个元素** 为 `base` ,执行「插入操作」后,**数组前 3 个元素已完成排序**。
|
||||
3. 以此类推……最后一轮选取 **数组尾元素** 为 `base` ,执行「插入操作」后,**所有元素已完成排序**。
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 插入排序流程 </p>
|
||||

|
||||
|
||||
=== "Java"
|
||||
|
||||
|
||||
@@ -9,9 +9,7 @@ comments: true
|
||||
- 待排序的列表的 **元素类型** 可以是整数、浮点数、字符、或字符串;
|
||||
- 排序算法可以根据需要设定 **判断规则**,例如数字大小、字符 ASCII 码顺序、自定义规则;
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 排序中的不同元素类型和判断规则 </p>
|
||||

|
||||
|
||||
## 11.1.1. 评价维度
|
||||
|
||||
|
||||
@@ -9,9 +9,7 @@ comments: true
|
||||
1. **划分阶段**:通过递归不断 **将数组从中点位置划分开**,将长数组的排序问题转化为短数组的排序问题;
|
||||
2. **合并阶段**:划分到子数组长度为 1 时,开始向上合并,不断将 **左、右两个短排序数组** 合并为 **一个长排序数组**,直至合并至原数组时完成排序;
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 归并排序两阶段:划分与合并 </p>
|
||||

|
||||
|
||||
## 11.5.1. 算法流程
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@ comments: true
|
||||
=== "<9>"
|
||||

|
||||
|
||||
<p align="center"> Fig. 哨兵划分 </p>
|
||||
|
||||
=== "Java"
|
||||
|
||||
```java title="quick_sort.java"
|
||||
@@ -296,9 +294,7 @@ comments: true
|
||||
|
||||
观察发现,快速排序和「二分查找」的原理类似,都是以对数阶的时间复杂度来缩小处理区间。
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 快速排序流程 </p>
|
||||

|
||||
|
||||
=== "Java"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user