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

2.9 KiB
Raw Permalink Blame History

数据结构的分类

- [[数组与链表]]
- [[栈与队列]]
- ### 逻辑结构
- 线性结构
	- [[数组]]
	- [[链表]]
	- [[栈]]
	- [[队列]]
	- [[哈希表]],元素之间一对一
- 非线性结构
	- [[树]]
	- [[堆]]
	- [[图]]
	- 哈希表
- 树形结构
	- 树
	- 堆
	- 哈希表,元素之间一对一
- 网状结构
	- 图,元素之间多对多
- ### 物理结构
- [[算法]]运行时,处理的数据主要存储于内存中
- 系统通过内存地址来访问目标位置的数据
- 数据结构与算法的设计中,内存是一个重要的考虑因素
- 物理结构反映了数据在内存中的存储发昂是
	- 连续空间存储(数组)
	- 分散空间存储(链表)
- > 所有数据结构都是基于数组、链表或二者的组合实现的
- 基于数组
	- 栈、队列、哈希表、树、堆、图、矩阵、张量维度大于等于3 的数组)
- 基于链表
	- 栈、队列、哈希表、树、堆、图
  • 基本数据类型

    • 基本数据类型是CPU可以直接进行运算的类型

    • 整数类型
      • byte
      • short
      • int
      • long
    • 浮点数类型
      • float
      • double
    • 字符类型
      • char
    • 布尔类型
      • bool
    • 基本数据类型的占用空间和取值范围
      • image.png
    • 基本数据类型提供了数据的”内容类型“,而数据结构提供了数据的组织方式
  • 数字编码

    • 数字是以”补码“的形式存储在计算机中的

    • 原码
      • 数字的二进制最高为视为符号位0正1负其余表示数字的值
    • 反码
      • 对原码除符号位外所有数字取反
    • 补码
      • 正数的补码与原码相同负数的补码是在反码的基础上加1
    • 浮点数 32bit
      • 符号位S1bit
      • 指数位E8bit
        • E=0表示零
        • E=255表示无穷大 NaN
      • 分数位N23bit
    • 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编码
      • 字符串可看成数组表示
        • 随机访问
        • 字符计数
        • 字符串操作