mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-27 16:26:29 +08:00
build
This commit is contained in:
parent
922c050246
commit
24673ec2b1
12 changed files with 10 additions and 113 deletions
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 4.1. 数组(Array)
|
# 4.1. 数组
|
||||||
|
|
||||||
「数组 Array」是一种将 **相同类型元素** 存储在 **连续内存空间** 的数据结构,将元素在数组中的位置称为元素的「索引 Index」。
|
「数组 Array」是一种将 **相同类型元素** 存储在 **连续内存空间** 的数据结构,将元素在数组中的位置称为元素的「索引 Index」。
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 4.2. 链表(Linked List)
|
# 4.2. 链表
|
||||||
|
|
||||||
!!! note "引言"
|
!!! note "引言"
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 4.3. 列表(List)
|
# 4.3. 列表
|
||||||
|
|
||||||
**由于长度不可变,数组的实用性大大降低**。在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。
|
**由于长度不可变,数组的实用性大大降低**。在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。
|
||||||
|
|
||||||
|
|
|
@ -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 条边的图
|
||||||
|
|
||||||
|
|
|
@ -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)$ 。
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 8.1. 堆(Heap)
|
# 8.1. 堆
|
||||||
|
|
||||||
「堆 Heap」是一棵限定条件下的「完全二叉树」。根据成立条件,堆主要分为两种类型:
|
「堆 Heap」是一棵限定条件下的「完全二叉树」。根据成立条件,堆主要分为两种类型:
|
||||||
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
---
|
|
||||||
comments: true
|
|
||||||
---
|
|
||||||
|
|
||||||
# 0.4. 一起参与创作
|
|
||||||
|
|
||||||
!!! success "开源的魅力"
|
|
||||||
|
|
||||||
纸质书籍的两次印刷的间隔时间往往需要数年,内容更新非常不方便。</br>但在本开源 HTML 书中,内容更迭的时间被缩短至数日甚至几个小时。
|
|
||||||
|
|
||||||
由于作者水平有限,书中内容难免疏漏谬误,请您谅解。如果发现笔误、无效链接、内容缺失、文字歧义、解释不清晰、行文结构不合理等问题,请您帮忙修正,以帮助其他读者获取更优质的学习内容。所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)将被展示在仓库与网站主页,以感谢他们对开源社区的无私奉献!
|
|
||||||
|
|
||||||
## 0.4.1. 内容微调
|
|
||||||
|
|
||||||
每个页面的右上角都有一个「编辑」图标,你可以按照以下步骤修改文字或代码:
|
|
||||||
|
|
||||||
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. 内容创作
|
|
||||||
|
|
||||||
如果您想要参与本开源项目,包括翻译代码至其他编程语言、拓展文章内容等,那么需要实施 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. 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
|
|
||||||
```
|
|
|
@ -1,50 +0,0 @@
|
||||||
---
|
|
||||||
comments: true
|
|
||||||
---
|
|
||||||
|
|
||||||
# 0.3. 编程环境安装
|
|
||||||
|
|
||||||
## 0.3.1. 安装 VSCode
|
|
||||||
|
|
||||||
本书推荐使用开源轻量的 VSCode 作为本地 IDE ,下载并安装 [VSCode](https://code.visualstudio.com/) 。
|
|
||||||
|
|
||||||
## 0.3.2. Java 环境
|
|
||||||
|
|
||||||
1. 下载并安装 [OpenJDK](https://jdk.java.net/18/)(版本需满足 > JDK 9)。
|
|
||||||
2. 在 VSCode 的插件市场中搜索 `java` ,安装 Java Extension Pack 。
|
|
||||||
|
|
||||||
## 0.3.3. 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. Python 环境
|
|
||||||
|
|
||||||
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) 。
|
|
||||||
2. 在 VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
|
|
||||||
|
|
||||||
## 0.3.5. Go 环境
|
|
||||||
|
|
||||||
1. 下载并安装 [go](https://go.dev/dl/) 。
|
|
||||||
2. 在 VSCode 的插件市场中搜索 `go` ,安装 Go 。
|
|
||||||
3. 快捷键 `Ctrl + Shift + P` 呼出命令栏,输入 go ,选择 `Go: Install/Update Tools` ,全部勾选并安装即可。
|
|
||||||
|
|
||||||
## 0.3.6. JavaScript 环境
|
|
||||||
|
|
||||||
1. 下载并安装 [node.js](https://nodejs.org/en/) 。
|
|
||||||
2. 在 VSCode 的插件市场中搜索 `javascript` ,安装 JavaScript (ES6) code snippets 。
|
|
||||||
|
|
||||||
## 0.3.7. C# 环境
|
|
||||||
|
|
||||||
1. 下载并安装 [.Net 6.0](https://dotnet.microsoft.com/en-us/download) ;
|
|
||||||
2. 在 VSCode 的插件市场中搜索 `c#` ,安装 c# 。
|
|
||||||
|
|
||||||
## 0.3.8. 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. 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)。
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 5.3. 双向队列(Deque)
|
# 5.3. 双向队列
|
||||||
|
|
||||||
对于队列,我们只能在头部删除或在尾部添加元素,而「双向队列 Deque」更加灵活,在其头部和尾部都能执行元素添加或删除操作。
|
对于队列,我们只能在头部删除或在尾部添加元素,而「双向队列 Deque」更加灵活,在其头部和尾部都能执行元素添加或删除操作。
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 5.2. 队列(Queue)
|
# 5.2. 队列
|
||||||
|
|
||||||
「队列 Queue」是一种遵循「先入先出 first in, first out」数据操作规则的线性数据结构。顾名思义,队列模拟的是排队现象,即外面的人不断加入队列尾部,而处于队列头部的人不断地离开。
|
「队列 Queue」是一种遵循「先入先出 first in, first out」数据操作规则的线性数据结构。顾名思义,队列模拟的是排队现象,即外面的人不断加入队列尾部,而处于队列头部的人不断地离开。
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 5.1. 栈(Stack)
|
# 5.1. 栈
|
||||||
|
|
||||||
「栈 Stack」是一种遵循「先入后出 first in, last out」数据操作规则的线性数据结构。我们可以将栈类比为放在桌面上的一摞盘子,如果需要拿出底部的盘子,则需要先将上面的盘子依次取出。
|
「栈 Stack」是一种遵循「先入后出 first in, last out」数据操作规则的线性数据结构。我们可以将栈类比为放在桌面上的一摞盘子,如果需要拿出底部的盘子,则需要先将上面的盘子依次取出。
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
comments: true
|
comments: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# 7.1. 二叉树(Binary Tree)
|
# 7.1. 二叉树
|
||||||
|
|
||||||
「二叉树 Binary Tree」是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。类似于链表,二叉树也是以结点为单位存储的,结点包含「值」和两个「指针」。
|
「二叉树 Binary Tree」是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。类似于链表,二叉树也是以结点为单位存储的,结点包含「值」和两个「指针」。
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue