mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-24 18:55:36 +08:00
build
This commit is contained in:
@ -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 字节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试难度。
|
||||
|
||||
出于以上原因,部分编程语言提出了一些不同的编码方案。
|
||||
|
||||
|
@ -12,19 +12,18 @@ comments: true
|
||||
|
||||
如图 3-1 所示,逻辑结构可分为“线性”和“非线性”两大类。线性结构比较直观,指数据在逻辑关系上呈线性排列;非线性结构则相反,呈非线性排列。
|
||||
|
||||
- **线性数据结构**:数组、链表、栈、队列、哈希表。
|
||||
- **线性数据结构**:数组、链表、栈、队列、哈希表,元素之间是一对一的顺序关系。
|
||||
- **非线性数据结构**:树、堆、图、哈希表。
|
||||
|
||||
非线性数据结构可以进一步划分为树形结构和网状结构。
|
||||
|
||||
- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。
|
||||
- **网状结构**:图,元素之间是多对多的关系。
|
||||
|
||||
{ class="animation-figure" }
|
||||
|
||||
<p align="center"> 图 3-1 线性数据结构与非线性数据结构 </p>
|
||||
|
||||
非线性数据结构可以进一步划分为树形结构和网状结构。
|
||||
|
||||
- **线性结构**:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。
|
||||
- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。
|
||||
- **网状结构**:图,元素之间是多对多的关系。
|
||||
|
||||
## 3.1.2 物理结构:连续与分散
|
||||
|
||||
**当算法程序运行时,正在处理的数据主要存储在内存中**。图 3-2 展示了一个计算机内存条,其中每个黑色方块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大小的数据。
|
||||
|
Reference in New Issue
Block a user