Add bubble sort, insertion sort.
4
.gitignore
vendored
|
@ -5,8 +5,10 @@
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
# mkdocs files
|
# mkdocs files
|
||||||
overrides/
|
|
||||||
site/
|
site/
|
||||||
|
.cache/
|
||||||
|
overrides/
|
||||||
codes/python
|
codes/python
|
||||||
codes/cpp
|
codes/cpp
|
||||||
|
|
||||||
docs/chapter_*
|
docs/chapter_*
|
19
README.md
|
@ -1,20 +1,10 @@
|
||||||
# Welcome to MkDocs
|
# Hello 算法
|
||||||
|
|
||||||
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
|
[<img src="docs/index.assets/conceptual_rendering.png" height="200" />](krahets.github.io/hello-algo/)
|
||||||
|
|
||||||
## Commands
|
动画图解、能运行、可讨论的
|
||||||
|
|
||||||
* `mkdocs new [dir-name]` - Create a new project.
|
数据结构与算法快速入门教程
|
||||||
* `mkdocs serve` - Start the live-reloading docs server.
|
|
||||||
* `mkdocs build` - Build the documentation site.
|
|
||||||
* `mkdocs -h` - Print help message and exit.
|
|
||||||
|
|
||||||
## Project layout
|
|
||||||
|
|
||||||
mkdocs.yml # The configuration file.
|
|
||||||
docs/
|
|
||||||
index.md # The documentation homepage.
|
|
||||||
... # Other markdown pages, images and other files.
|
|
||||||
|
|
||||||
## 更新日志
|
## 更新日志
|
||||||
|
|
||||||
|
@ -36,6 +26,7 @@ For full documentation visit [mkdocs.org](https://www.mkdocs.org).
|
||||||
| 更新:首页介绍 | 2022-11-15 |
|
| 更新:首页介绍 | 2022-11-15 |
|
||||||
| 更新:关于本书</br>新增:如何使用本书</br>新增:一起参与创作 | 2022-11-16 |
|
| 更新:关于本书</br>新增:如何使用本书</br>新增:一起参与创作 | 2022-11-16 |
|
||||||
| 新增:查找算法 | 2022-11-19 |
|
| 新增:查找算法 | 2022-11-19 |
|
||||||
|
| 更新:Markdown Stylesheet</br>新增:冒泡排序、插入排序 | 2022-11-21 |
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
50
codes/java/chapter_sorting/bubble_sort.java
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package chapter_sorting;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class bubble_sort {
|
||||||
|
/* 冒泡排序 */
|
||||||
|
static void bubbleSort(int[] nums) {
|
||||||
|
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
|
||||||
|
for (int i = nums.length - 1; i > 0; i--) {
|
||||||
|
// 内循环:冒泡操作
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
if (nums[j] > nums[j + 1]) {
|
||||||
|
// 交换 nums[j] 与 nums[j + 1]
|
||||||
|
int tmp = nums[j];
|
||||||
|
nums[j] = nums[j + 1];
|
||||||
|
nums[j + 1] = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 冒泡排序(标志优化)*/
|
||||||
|
static void bubbleSortWithFlag(int[] nums) {
|
||||||
|
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
|
||||||
|
for (int i = nums.length - 1; i > 0; i--) {
|
||||||
|
boolean flag = false; // 初始化标志位
|
||||||
|
// 内循环:冒泡操作
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
if (nums[j] > nums[j + 1]) {
|
||||||
|
// 交换 nums[j] 与 nums[j + 1]
|
||||||
|
int tmp = nums[j];
|
||||||
|
nums[j] = nums[j + 1];
|
||||||
|
nums[j + 1] = tmp;
|
||||||
|
flag = true; // 记录交换元素
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!flag) break; // 此轮冒泡未交换任何元素,直接跳出
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int[] nums = { 4, 1, 3, 1, 5, 2 };
|
||||||
|
bubbleSort(nums);
|
||||||
|
System.out.println("排序后数组 nums = " + Arrays.toString(nums));
|
||||||
|
|
||||||
|
int[] nums1 = { 4, 1, 3, 1, 5, 2 };
|
||||||
|
bubbleSortWithFlag(nums1);
|
||||||
|
System.out.println("排序后数组 nums1 = " + Arrays.toString(nums));
|
||||||
|
}
|
||||||
|
}
|
25
codes/java/chapter_sorting/insertion_sort.java
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
package chapter_sorting;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class insertion_sort {
|
||||||
|
/* 插入排序 */
|
||||||
|
static void insertionSort(int[] nums) {
|
||||||
|
// 外循环:base = nums[1], nums[2], ..., nums[n-1]
|
||||||
|
for (int i = 1; i < nums.length; i++) {
|
||||||
|
int base = nums[i], j = i - 1;
|
||||||
|
// 内循环:将 base 插入到左边的正确位置
|
||||||
|
while (j >= 0 && nums[j] > base) {
|
||||||
|
nums[j + 1] = nums[j]; // 1. 将 nums[j] 向右移动一位
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
nums[j + 1] = base; // 2. 将 base 赋值到正确位置
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int[] nums = { 4, 1, 3, 1, 5, 2 };
|
||||||
|
insertionSort(nums);
|
||||||
|
System.out.println("排序后数组 nums = " + Arrays.toString(nums));
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 503 KiB |
BIN
docs/index.assets/animation.gif
Normal file
After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 626 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 276 KiB |
BIN
docs/index.assets/conceptual_rendering.png
Normal file
After Width: | Height: | Size: 217 KiB |
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 318 KiB |
|
@ -7,34 +7,38 @@ hide:
|
||||||
=== " "
|
=== " "
|
||||||
|
|
||||||
<div class="result" markdown>
|
<div class="result" markdown>
|
||||||
![conceptual_rendering](index.assets/conceptual_rendering.jpg){ align=left width=300 }
|
![conceptual_rendering](index.assets/conceptual_rendering.png){ align=left width=300 }
|
||||||
</br>
|
|
||||||
</br>
|
</br>
|
||||||
</br>
|
</br>
|
||||||
</br>
|
</br>
|
||||||
<h1 style="text-align:center"> 《 Hello,算法 》 </h1>
|
<h1 style="text-align:center"> 《 Hello,算法 》 </h1>
|
||||||
<h3 style="text-align:center"> 动画图解、能运行、可讨论的</br>数据结构与算法快速入门教程 </h3>
|
<h3 style="text-align:center"> 动画图解、能运行、可讨论的</br>数据结构与算法快速入门教程 </h3>
|
||||||
<h3 style="text-align:center"> [![github-stars](https://img.shields.io/github/stars/krahets/hello-algo?style=social)](https://github.com/krahets/hello-algo) </h3>
|
<p style="text-align:center"> [@Krahets](https://leetcode.cn/u/jyd/) </p>
|
||||||
|
<p style="text-align:center"> [![github-stars](https://img.shields.io/github/stars/krahets/hello-algo?style=social)](https://github.com/krahets/hello-algo) </p>
|
||||||
</br>
|
</br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<h2 style="text-align:center"> 「动画 + 图片 + HTML」 </h2>
|
<h2 style="text-align:center"> 「清晰动画讲解」 </h2>
|
||||||
|
|
||||||
<p style="text-align:center"> 重点知识以动画和图解为主,提升知识吸收效率</br>由 MkDocs 构建文档,支持笔记本、平板、手机多种终端 </p>
|
<p style="text-align:center"> 借助动画介绍重点,提升知识吸收效率</br>HTML 文档,支持笔记本、平板、手机多种终端 </p>
|
||||||
|
|
||||||
![algorithm_animation](index.assets/algorithm_animation.gif)
|
![algorithm_animation](index.assets/animation.gif)
|
||||||
|
|
||||||
<h2 style="text-align:center"> 「面向代码,注重实践」 </h2>
|
---
|
||||||
|
|
||||||
|
<h2 style="text-align:center"> 「代码实践导向」 </h2>
|
||||||
|
|
||||||
<p style="text-align:center"> 示例代码皆可一键运行,在调试中加深理解</br>提供 Java, C++, Python 源码与详细注释 </p>
|
<p style="text-align:center"> 示例代码皆可一键运行,在调试中加深理解</br>提供 Java, C++, Python 源码与详细注释 </p>
|
||||||
|
|
||||||
![running_code](index.assets/running_code.gif)
|
![running_code](index.assets/running_code.gif)
|
||||||
|
|
||||||
<h2 style="text-align:center"> 「可讨论,能提问」 </h2>
|
---
|
||||||
|
|
||||||
<p style="text-align:center"> 在评论区和小伙伴们一起讨论进步</br>作者定期回复评论问题(一般 < 72h ) </p>
|
<h2 style="text-align:center"> 「可讨论与提问」 </h2>
|
||||||
|
|
||||||
|
<p style="text-align:center"> 在评论区与小伙伴们一起学习进步</br>作者定期回复评论问题(一般 < 72h ) </p>
|
||||||
|
|
||||||
![comment](index.assets/comment.gif)
|
![comment](index.assets/comment.gif)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
|
/* Color Settings */
|
||||||
/* https://github.com/squidfunk/mkdocs-material/blob/6b5035f5580f97532d664e3d1babf5f320e88ee9/src/assets/stylesheets/main/_colors.scss */
|
/* https://github.com/squidfunk/mkdocs-material/blob/6b5035f5580f97532d664e3d1babf5f320e88ee9/src/assets/stylesheets/main/_colors.scss */
|
||||||
/* https://squidfunk.github.io/mkdocs-material/setup/changing-the-colors/#custom-colors */
|
/* https://squidfunk.github.io/mkdocs-material/setup/changing-the-colors/#custom-colors */
|
||||||
|
|
||||||
:root > * {
|
:root > * {
|
||||||
--md-primary-fg-color: #FFFFFF;
|
--md-primary-fg-color: #FFFFFF;
|
||||||
--md-primary-bg-color: #1D1D20;
|
--md-primary-bg-color: #1D1D20;
|
||||||
|
@ -30,3 +31,14 @@
|
||||||
/* Reset alignment for table cells */
|
/* Reset alignment for table cells */
|
||||||
text-align: initial;
|
text-align: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Markdown Header */
|
||||||
|
.md-typeset h1 {
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--md-default-fg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h2 {
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
25
mkdocs.yml
|
@ -6,6 +6,7 @@ site_description: Your first book to learn Data Structure And Algorithm.
|
||||||
# Repository
|
# Repository
|
||||||
repo_name: krahets/hello-algo
|
repo_name: krahets/hello-algo
|
||||||
repo_url: https://github.com/krahets/hello-algo
|
repo_url: https://github.com/krahets/hello-algo
|
||||||
|
edit_uri: https://github.com/krahets/hello-algo/master/docs/
|
||||||
|
|
||||||
# Copyright
|
# Copyright
|
||||||
copyright: Copyright © 2020 - 2022 Krahets
|
copyright: Copyright © 2020 - 2022 Krahets
|
||||||
|
@ -14,6 +15,7 @@ copyright: Copyright © 2020 - 2022 Krahets
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
custom_dir: overrides
|
custom_dir: overrides
|
||||||
|
language: zh
|
||||||
features:
|
features:
|
||||||
- announce.dismiss
|
- announce.dismiss
|
||||||
- content.code.annotate
|
- content.code.annotate
|
||||||
|
@ -52,8 +54,9 @@ theme:
|
||||||
code: Roboto Mono
|
code: Roboto Mono
|
||||||
favicon: assets/images/favicon.png
|
favicon: assets/images/favicon.png
|
||||||
logo: assets/images/logo.png
|
logo: assets/images/logo.png
|
||||||
# icon:
|
icon:
|
||||||
# logo: logo
|
logo: logo
|
||||||
|
repo: fontawesome/brands/github
|
||||||
|
|
||||||
extra:
|
extra:
|
||||||
social:
|
social:
|
||||||
|
@ -61,7 +64,9 @@ extra:
|
||||||
link: https://github.com/krahets
|
link: https://github.com/krahets
|
||||||
- icon: fontawesome/brands/twitter
|
- icon: fontawesome/brands/twitter
|
||||||
link: https://twitter.com/krahets
|
link: https://twitter.com/krahets
|
||||||
generator: false
|
- icon: fontawesome/solid/code
|
||||||
|
link: https://leetcode.cn/u/jyd/
|
||||||
|
# generator: false
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
plugins:
|
plugins:
|
||||||
|
@ -113,12 +118,11 @@ extra_css:
|
||||||
|
|
||||||
# Page tree
|
# Page tree
|
||||||
nav:
|
nav:
|
||||||
- 前言:
|
- 关于本书:
|
||||||
- chapter_introduction/index.md
|
- chapter_introduction/index.md
|
||||||
- 如何使用本书:
|
- 如何使用本书: chapter_introduction/suggestions.md
|
||||||
- 算法学习建议: chapter_prerequisites/suggestions.md
|
- 编程环境安装: chapter_introduction/installation.md
|
||||||
- 编程环境安装: chapter_prerequisites/installation.md
|
- 一起参与创作: chapter_introduction/contribution.md
|
||||||
- 一起参与创作: chapter_prerequisites/contribution.md
|
|
||||||
- 算法是什么:
|
- 算法是什么:
|
||||||
- chapter_dsa_introduction/index.md
|
- chapter_dsa_introduction/index.md
|
||||||
- 计算复杂度:
|
- 计算复杂度:
|
||||||
|
@ -151,5 +155,10 @@ nav:
|
||||||
- 二分查找: chapter_searching/binary_search.md
|
- 二分查找: chapter_searching/binary_search.md
|
||||||
- 哈希查找: chapter_searching/hashing_search.md
|
- 哈希查找: chapter_searching/hashing_search.md
|
||||||
- 小结: chapter_searching/summary.md
|
- 小结: chapter_searching/summary.md
|
||||||
|
- 排序算法:
|
||||||
|
- 冒泡排序: chapter_sorting/bubble_sort.md
|
||||||
|
- 插入排序: chapter_sorting/insertion_sort.md
|
||||||
|
- 归并排序: chapter_sorting/merge_sort.md
|
||||||
|
- 快速排序: chapter_sorting/quick_sort.md
|
||||||
- 参考文献:
|
- 参考文献:
|
||||||
- chapter_reference/index.md
|
- chapter_reference/index.md
|