Skip to content

算法与数据结构

数据结构主要是指数据的两种结构

  • 数据之间的逻辑结构
  • 数据在计算机内存中的物理结构

逻辑结构

按照逻辑结构来划分,主要分为线性结构非线性结构;

线性结构:数组、表、链表、栈、队列;数据以一定的线性顺序关系排列组织,比较直观。

非线性结构:树(堆是特殊的树)、图、集合、字典(哈希表)

某些数据结构可能同时包含线性和非线性结构,比如为了解决哈希冲突,哈希表的每个元素可能作为一个数组或者链表的头指针。

物理结构

  • 连续 continuous 存储
  • 离散 discrete 存储

离散数学

离散数学是研究离散结构的数学分支,它是计算机科学的基础学科,也是计算机算法的基础,当时大三学习该课程时不知其意义。

牛顿和莱布尼茨发明的微积分是研究连续空间结构的,很好地服务了大众。现实世界是连续的,物理学中的很多问题都被微积分的模型阐述和解决。

人也是连续的,思维和行为都是连续的,人还是复杂的多样的,切忌不要将人也二值化处理分类,非黑即白的判定不可取。

计算机只能处理离散的数据。

  • 计算机的硬件基础逻辑门就是很好的例子:连续的电子信号被离散化成01的状态。
  • 哈希算法就是两个集合之间的映射关系。
  • 编程语言的语法和语义也是离散的

    1. 我们基于某种语言编写的程序
    2. 以及编译器将其转换成的机器码
    3. 处理器的指令集(e.g. x86, ARM)

这几个实体之间的关系也是离散的,本质也是多个集合之间的映射关系。