From 9bc021e98c4e8a2188a3b5c01c81e968c03afb33 Mon Sep 17 00:00:00 2001 From: krahets Date: Wed, 24 Jan 2024 16:58:21 +0800 Subject: [PATCH] build --- docs-en/chapter_stack_and_queue/queue.md | 2 +- .../space_complexity.md | 2 +- .../character_encoding.md | 2 +- .../classification_of_data_structure.md | 13 +++--- docs/chapter_stack_and_queue/queue.md | 2 +- docs/index.md | 44 +++++++++---------- overrides/stylesheets/extra.css | 17 ++++--- 7 files changed, 43 insertions(+), 39 deletions(-) diff --git a/docs-en/chapter_stack_and_queue/queue.md b/docs-en/chapter_stack_and_queue/queue.md index 99415aff6..6d1e0f3c7 100755 --- a/docs-en/chapter_stack_and_queue/queue.md +++ b/docs-en/chapter_stack_and_queue/queue.md @@ -1056,7 +1056,7 @@ Below is the code for implementing a queue using a linked list: /* 析构函数 */ void delLinkedListQueue(LinkedListQueue *queue) { // 释放所有节点 - for (int i = 0; i < queue->queSize && queue->front != NULL; i++) { + while (queue->front != NULL) { ListNode *tmp = queue->front; queue->front = queue->front->next; free(tmp); diff --git a/docs/chapter_computational_complexity/space_complexity.md b/docs/chapter_computational_complexity/space_complexity.md index 44b7fa68b..02e684816 100755 --- a/docs/chapter_computational_complexity/space_complexity.md +++ b/docs/chapter_computational_complexity/space_complexity.md @@ -2059,7 +2059,7 @@ $$ 对数阶常见于分治算法。例如归并排序,输入长度为 $n$ 的数组,每轮递归将数组从中点处划分为两半,形成高度为 $\log n$ 的递归树,使用 $O(\log n)$ 栈帧空间。 -再例如将数字转化为字符串,输入一个正整数 $n$ ,它的位数为 $\log_{10} n + 1$ ,即对应字符串长度为 $\log_{10} n + 1$ ,因此空间复杂度为 $O(\log_{10} n + 1) = O(\log n)$ 。 +再例如将数字转化为字符串,输入一个正整数 $n$ ,它的位数为 $\lfloor \log_{10} n \rfloor + 1$ ,即对应字符串长度为 $\lfloor \log_{10} n \rfloor + 1$ ,因此空间复杂度为 $O(\log_{10} n + 1) = O(\log n)$ 。 ## 2.4.4   权衡时间与空间 diff --git a/docs/chapter_data_structure/character_encoding.md b/docs/chapter_data_structure/character_encoding.md index ea77ad9f6..952df435d 100644 --- a/docs/chapter_data_structure/character_encoding.md +++ b/docs/chapter_data_structure/character_encoding.md @@ -86,7 +86,7 @@ UTF-8 的编码规则并不复杂,分为以下两种情况。 - JavaScript 和 TypeScript 的字符串使用 UTF-16 编码的原因与 Java 类似。当 1995 年 Netscape 公司首次推出 JavaScript 语言时,Unicode 还处于发展早期,那时候使用 16 位的编码就足以表示所有的 Unicode 字符了。 - C# 使用 UTF-16 编码,主要是因为 .NET 平台是由 Microsoft 设计的,而 Microsoft 的很多技术(包括 Windows 操作系统)都广泛使用 UTF-16 编码。 -由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字节,从而丧失了等长编码的优势。另一方面,处理代理对需要增加额外代码,这提高了编程的复杂性和调试难度。 +由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试难度。 出于以上原因,部分编程语言提出了一些不同的编码方案。 diff --git a/docs/chapter_data_structure/classification_of_data_structure.md b/docs/chapter_data_structure/classification_of_data_structure.md index 04c7fc2e6..5fa5e3238 100644 --- a/docs/chapter_data_structure/classification_of_data_structure.md +++ b/docs/chapter_data_structure/classification_of_data_structure.md @@ -12,19 +12,18 @@ comments: true 如图 3-1 所示,逻辑结构可分为“线性”和“非线性”两大类。线性结构比较直观,指数据在逻辑关系上呈线性排列;非线性结构则相反,呈非线性排列。 -- **线性数据结构**:数组、链表、栈、队列、哈希表。 +- **线性数据结构**:数组、链表、栈、队列、哈希表,元素之间是一对一的顺序关系。 - **非线性数据结构**:树、堆、图、哈希表。 +非线性数据结构可以进一步划分为树形结构和网状结构。 + +- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。 +- **网状结构**:图,元素之间是多对多的关系。 + ![线性数据结构与非线性数据结构](classification_of_data_structure.assets/classification_logic_structure.png){ class="animation-figure" }

图 3-1   线性数据结构与非线性数据结构

-非线性数据结构可以进一步划分为树形结构和网状结构。 - -- **线性结构**:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。 -- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。 -- **网状结构**:图,元素之间是多对多的关系。 - ## 3.1.2   物理结构:连续与分散 **当算法程序运行时,正在处理的数据主要存储在内存中**。图 3-2 展示了一个计算机内存条,其中每个黑色方块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大小的数据。 diff --git a/docs/chapter_stack_and_queue/queue.md b/docs/chapter_stack_and_queue/queue.md index 1a14b375c..10d5aeaa0 100755 --- a/docs/chapter_stack_and_queue/queue.md +++ b/docs/chapter_stack_and_queue/queue.md @@ -1056,7 +1056,7 @@ comments: true /* 析构函数 */ void delLinkedListQueue(LinkedListQueue *queue) { // 释放所有节点 - for (int i = 0; i < queue->queSize && queue->front != NULL; i++) { + while (queue->front != NULL) { ListNode *tmp = queue->front; queue->front = queue->front->next; free(tmp); diff --git a/docs/index.md b/docs/index.md index 1e99458c2..03ce90f02 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,91 +23,91 @@ hide: style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;"> -

初识算法

+ 初识算法
-

复杂度

+ 复杂度
-

数组与链表

+ 数组与链表
-

栈与队列

+ 栈与队列
-

哈希表

+ 哈希表
-

+
-

+
-

+
-

搜索

+ 搜索
-

排序

+ 排序
-

分治

+ 分治
-

回溯

+ 回溯
-

动态规划

+ 动态规划
-

贪心

+ 贪心
-
+
hello-algo-typing-svg

动画图解、一键运行的数据结构与算法教程

-
+
-

开始阅读

+ 开始阅读
-

代码仓库

+ 代码仓库
@@ -157,7 +157,7 @@ hide:
-
+
@@ -166,11 +166,11 @@ hide:
-

提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读

+

提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读

-

下载 PDF

+ 下载 PDF

推荐语

-
+

“一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。”

—— 邓俊辉,清华大学计算机系教授

diff --git a/overrides/stylesheets/extra.css b/overrides/stylesheets/extra.css index 684c06bc9..a1ea8510d 100644 --- a/overrides/stylesheets/extra.css +++ b/overrides/stylesheets/extra.css @@ -204,7 +204,7 @@ body { background-color: var(--md-default-bg-color); color: var(--md-default-fg-color); font-size: 0.9rem; - padding: 2em; + padding: 3em 2em; text-align: center; } @@ -221,7 +221,7 @@ body { justify-content: center; border-radius: 10em; margin: 0 0.1em; - padding: 0.5em 1.3em; + padding: 0.6em 1.3em; border: none; background-color: var(--md-typeset-btn-color); color: var(--md-primary-fg-color) !important; @@ -234,9 +234,10 @@ body { background-color: var(--md-typeset-btn-hover-color); } -.rounded-button p { +.rounded-button span { margin: 0; - margin-bottom: 0.1em; + margin-bottom: 0.07em; + white-space: nowrap; } .rounded-button svg { @@ -257,18 +258,22 @@ body { } .text-button { + width: 100%; display: flex; flex-direction: row; align-items: center; color: var(--md-typeset-btn-color); text-decoration: none; - margin: 0 1em; } .text-button:hover { text-decoration: underline; } +.text-button span { + white-space: nowrap; +} + .text-button svg { display: inline-block; fill: var(--md-typeset-btn-color); @@ -288,7 +293,7 @@ body { padding: 0; position: relative; color: white; - font-size: min(2vh, 2.5vw); + font-size: min(1.8vh, 2.5vw); font-weight: 500; }