Files
logseq-1/pages/数据结构.md
2024-06-17 22:24:52 +08:00

89 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 数据结构的分类
- [[数组与链表]]
- [[栈与队列]]
- ### 逻辑结构
- 线性结构
- [[数组]]
- [[链表]]
- [[栈]]
- [[队列]]
- [[哈希表]],元素之间一对一
- 非线性结构
- [[树]]
- [[堆]]
- [[图]]
- 哈希表
- 树形结构
-
-
- 哈希表,元素之间一对一
- 网状结构
- 图,元素之间多对多
- ### 物理结构
- [[算法]]运行时,处理的数据主要存储于内存中
- 系统通过内存地址来访问目标位置的数据
- 数据结构与算法的设计中,内存是一个重要的考虑因素
- 物理结构反映了数据在内存中的存储发昂是
- 连续空间存储(数组)
- 分散空间存储(链表)
- > 所有数据结构都是基于数组、链表或二者的组合实现的
- 基于数组
- 栈、队列、哈希表、树、堆、图、矩阵、张量维度大于等于3 的数组)
- 基于链表
- 栈、队列、哈希表、树、堆、图
- ## 基本数据类型
- > 基本数据类型是CPU可以直接进行运算的类型
- 整数类型
- byte
- short
- int
- long
- 浮点数类型
- float
- double
- 字符类型
- char
- 布尔类型
- bool
- 基本数据类型的占用空间和取值范围
- ![image.png](../assets/image_1717122359420_0.png)
- 基本数据类型提供了数据的”内容类型“,而数据结构提供了数据的组织方式
- ## 数字编码
- > 数字是以”补码“的形式存储在计算机中的
- 原码
- 数字的二进制最高为视为符号位0正1负其余表示数字的值
- 反码
- 对原码除符号位外所有数字取反
- 补码
- 正数的补码与原码相同负数的补码是在反码的基础上加1
- 浮点数 `32bit`
- 符号位S`1bit`
- 指数位E`8bit`
- E=0表示零
- E=255表示无穷大 NaN
- 分数位N`23bit`
- `float` 的表示方式包含指数位,导致其取值范围远大于 `int`
- id:: 6659374d-dfae-436f-af1d-3d1fdf513b37
> **尽管浮点数 `float` 扩展了取值范围,但其副作用是牺牲了精度**
- ## 字符编码
- ASICC字符集
- 共128个字符仅能表示英文
- GBK字符集
- GB2312字符集6763个汉字
- GBK字符集21886个汉字
- ASICC一个字节表示汉字两个字节表示
- Unicode字符集
- 多种语言,同一语言也有多种字符集
- 当多种长度的 Unicode 码点同时出现在一个文本中时,系统如何解析字符?
- 一种直接的解决方案是将所有字符存储为等长的编码
- UTF-8编码
- 可变长编码使用1-4字节表示一个字符
- 向下兼容ASICC编码
- UTF-16使用2-4字节表示一个字符
- UTF-32每个字符都使用4个字节表示
- 编程语言的字符编码
- 使用UTF-16或UTF-32编码
- 字符串可看成数组表示
- 随机访问
- 字符计数
- 字符串操作