This commit is contained in:
krahets 2023-02-28 20:06:23 +08:00
parent 922c050246
commit 24673ec2b1
12 changed files with 10 additions and 113 deletions

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 4.1.   数组Array # 4.1.   数组
「数组 Array」是一种将 **相同类型元素** 存储在 **连续内存空间** 的数据结构,将元素在数组中的位置称为元素的「索引 Index」。 「数组 Array」是一种将 **相同类型元素** 存储在 **连续内存空间** 的数据结构,将元素在数组中的位置称为元素的「索引 Index」。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 4.2.   链表Linked List # 4.2.   链表
!!! note "引言" !!! note "引言"

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 4.3.   列表List # 4.3.   列表
**由于长度不可变,数组的实用性大大降低**。在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。 **由于长度不可变,数组的实用性大大降低**。在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 9.1.  Graph # 9.1.  
「图 Graph」是一种非线性数据结构由「顶点 Vertex」和「边 Edge」组成。我们可将图 $G$ 抽象地表示为一组顶点 $V$ 和一组边 $E$ 的集合。例如,以下表示一个包含 5 个顶点和 7 条边的图 「图 Graph」是一种非线性数据结构由「顶点 Vertex」和「边 Edge」组成。我们可将图 $G$ 抽象地表示为一组顶点 $V$ 和一组边 $E$ 的集合。例如,以下表示一个包含 5 个顶点和 7 条边的图

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 6.1.   哈希表Hash Map # 6.1.   哈希表
哈希表通过建立「键 key」和「值 value」之间的映射实现高效的元素查找。具体地输入一个 key ,在哈希表中查询并获取 value ,时间复杂度为 $O(1)$ 。 哈希表通过建立「键 key」和「值 value」之间的映射实现高效的元素查找。具体地输入一个 key ,在哈希表中查询并获取 value ,时间复杂度为 $O(1)$ 。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 8.1.  Heap # 8.1.  
「堆 Heap」是一棵限定条件下的「完全二叉树」。根据成立条件堆主要分为两种类型 「堆 Heap」是一棵限定条件下的「完全二叉树」。根据成立条件堆主要分为两种类型

View file

@ -1,53 +0,0 @@
---
comments: true
---
# 0.4.   一起参与创作
!!! success "开源的魅力"
纸质书籍的两次印刷的间隔时间往往需要数年,内容更新非常不方便。</br>但在本开源 HTML 书中,内容更迭的时间被缩短至数日甚至几个小时。
由于作者水平有限,书中内容难免疏漏谬误,请您谅解。如果发现笔误、无效链接、内容缺失、文字歧义、解释不清晰、行文结构不合理等问题,请您帮忙修正,以帮助其他读者获取更优质的学习内容。所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)将被展示在仓库与网站主页,以感谢他们对开源社区的无私奉献!
## 0.4.1. &nbsp; 内容微调
每个页面的右上角都有一个「编辑」图标,你可以按照以下步骤修改文字或代码:
1. 点击编辑按钮,如果遇到提示“需要 Fork 此仓库”,请通过;
2. 修改 Markdown 源文件内容,并检查内容正确性,尽量保持排版格式统一;
3. 在页面底部填写更改说明然后单击“Propose file change”按钮页面跳转后点击“Create pull request”按钮发起拉取请求即可。
![页面编辑按键](contribution.assets/edit_markdown.png)
<p align="center"> Fig. 页面编辑按键 </p>
图片无法直接修改,需要通过新建 [Issue](https://github.com/krahets/hello-algo/issues) 或评论留言来描述图片问题,我会第一时间重新画图并替换图片。
## 0.4.2. &nbsp; 内容创作
如果您想要参与本开源项目,包括翻译代码至其他编程语言、拓展文章内容等,那么需要实施 Pull Request 工作流程:
1. 登录 GitHub ,并 Fork [本仓库](https://github.com/krahets/hello-algo) 至个人账号;
2. 进入 Fork 仓库网页,使用 `git clone` 克隆该仓库至本地;
3. 在本地进行内容创作,并通过运行测试来验证代码正确性;
4. 将本地更改 Commit ,并 Push 至远程仓库;
5. 刷新仓库网页点击“Create pull request”按钮发起拉取请求即可
## 0.4.3. &nbsp; Docker 部署
你可以使用 Docker 来部署本项目。
```shell
git clone https://github.com/krahets/hello-algo.git
cd hello-algo
docker-compose up -d
```
稍等片刻,即可使用浏览器打开 `http://localhost:8000` 访问本项目。
使用以下命令即可删除部署。
```shell
docker-compose down
```

View file

@ -1,50 +0,0 @@
---
comments: true
---
# 0.3. &nbsp; 编程环境安装
## 0.3.1. &nbsp; 安装 VSCode
本书推荐使用开源轻量的 VSCode 作为本地 IDE ,下载并安装 [VSCode](https://code.visualstudio.com/) 。
## 0.3.2. &nbsp; Java 环境
1. 下载并安装 [OpenJDK](https://jdk.java.net/18/)(版本需满足 > JDK 9
2. 在 VSCode 的插件市场中搜索 `java` ,安装 Java Extension Pack 。
## 0.3.3. &nbsp; C/C++ 环境
1. Windows 系统需要安装 [MinGW](https://sourceforge.net/projects/mingw-w64/files/)[配置教程](https://blog.csdn.net/qq_33698226/article/details/129031241)MacOS 自带 Clang 无需安装。
2. 在 VSCode 的插件市场中搜索 `c++` ,安装 C/C++ Extension Pack 。
## 0.3.4. &nbsp; Python 环境
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) 。
2. 在 VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
## 0.3.5. &nbsp; Go 环境
1. 下载并安装 [go](https://go.dev/dl/) 。
2. 在 VSCode 的插件市场中搜索 `go` ,安装 Go 。
3. 快捷键 `Ctrl + Shift + P` 呼出命令栏,输入 go ,选择 `Go: Install/Update Tools` ,全部勾选并安装即可。
## 0.3.6. &nbsp; JavaScript 环境
1. 下载并安装 [node.js](https://nodejs.org/en/) 。
2. 在 VSCode 的插件市场中搜索 `javascript` ,安装 JavaScript (ES6) code snippets 。
## 0.3.7. &nbsp; C# 环境
1. 下载并安装 [.Net 6.0](https://dotnet.microsoft.com/en-us/download)
2. 在 VSCode 的插件市场中搜索 `c#` ,安装 c# 。
## 0.3.8. &nbsp; Swift 环境
1. 下载并安装 [Swift](https://www.swift.org/download/)
2. 在 VSCode 的插件市场中搜索 `swift`,安装 [Swift for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang)。
## 0.3.9. &nbsp; Rust 环境
1. 下载并安装 [Rust](https://www.rust-lang.org/tools/install)
2. 在 VSCode 的插件市场中搜索 `rust`,安装 [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 5.3. &nbsp; 双向队列Deque # 5.3. &nbsp; 双向队列
对于队列,我们只能在头部删除或在尾部添加元素,而「双向队列 Deque」更加灵活在其头部和尾部都能执行元素添加或删除操作。 对于队列,我们只能在头部删除或在尾部添加元素,而「双向队列 Deque」更加灵活在其头部和尾部都能执行元素添加或删除操作。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 5.2. &nbsp; 队列Queue # 5.2. &nbsp; 队列
「队列 Queue」是一种遵循「先入先出 first in, first out」数据操作规则的线性数据结构。顾名思义队列模拟的是排队现象即外面的人不断加入队列尾部而处于队列头部的人不断地离开。 「队列 Queue」是一种遵循「先入先出 first in, first out」数据操作规则的线性数据结构。顾名思义队列模拟的是排队现象即外面的人不断加入队列尾部而处于队列头部的人不断地离开。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 5.1. &nbsp;Stack # 5.1. &nbsp;
「栈 Stack」是一种遵循「先入后出 first in, last out」数据操作规则的线性数据结构。我们可以将栈类比为放在桌面上的一摞盘子如果需要拿出底部的盘子则需要先将上面的盘子依次取出。 「栈 Stack」是一种遵循「先入后出 first in, last out」数据操作规则的线性数据结构。我们可以将栈类比为放在桌面上的一摞盘子如果需要拿出底部的盘子则需要先将上面的盘子依次取出。

View file

@ -2,7 +2,7 @@
comments: true comments: true
--- ---
# 7.1. &nbsp; 二叉树Binary Tree # 7.1. &nbsp; 二叉树
「二叉树 Binary Tree」是一种非线性数据结构代表着祖先与后代之间的派生关系体现着“一分为二”的分治逻辑。类似于链表二叉树也是以结点为单位存储的结点包含「值」和两个「指针」。 「二叉树 Binary Tree」是一种非线性数据结构代表着祖先与后代之间的派生关系体现着“一分为二”的分治逻辑。类似于链表二叉树也是以结点为单位存储的结点包含「值」和两个「指针」。