数据结构
数据结构
数据结构如同一幅稳固多样的框架,为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。
数据结构的分类
常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图。它们可以从“逻辑结构”和“物理结构”两个维度进行分类。
逻辑结构:线性和非线性
逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定的顺序排列,体现了数据之间的线性关系;而在树中,数据从顶部向下按层次排列,表现了“祖先”和“后代”之间的派生关系;图则有节点和边组成,反映了复杂的网格关系。
逻辑结构可分为线性和非线性两种结构。线性结构比较直观,数据在逻辑关系上呈现线性排列。非线性结构则相反,呈非线性排列。
- 线性数据结构:数组、链表、栈、队列、哈希表,元素之间是一对一关系。
- 非线性数据结构:树、堆、图、堆、哈希表。
非线性结构可进一步分为树形结构和网状结构。
- 树形结构:树、堆、哈希表,元素之间是一对多关系。
- 网状结构:图,元素之间是多对多关系。

物理结构:连续与分散
当算法程序运行时,正在处理的数据主要存储在内存中。计算机规则是为每个内存空间分配唯一的内存地址,系统通过内存地址来访问目标位置内存中的数据。

内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其它程序同时使用。因此在数据结构与算法中,内存资源也是较为重要的考虑因素,算法所占用的内存峰值不应该超过系统剩余空间。
物理结构反映了数据在内存中的存储方式,分为可连续存储和分散空间存储。物理结构的区别从底层上决定了数据的访问、更新、增删等操作方法。此外,所有的数据结构均可基于数组、链表或二者之和组成实现,而哈希表的实现则可能包含二者。
基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度>=3的数组),被称为“静态数据结构”,意味着初始化后长度不可变。 基于链表可实现:栈、队列、哈希表、树、堆、图等,被称为动态数据结构,意味着在初始化后,长度依旧可变。

基本数据类型
基本数据类型是CPU可以直接运行运算的类型,主要包含以下:
- 整数类型:byte、short、int、long,用于表示整数。
- 浮点数类型:float、double,用于表示小数。
- 字符类型:char,用于表示各种字母、标点符号等。
- 布尔类型:bool,用于表示真或假的值。
基本数据以二进制的形式存储与计算机中,一个二进制即为1byte,一个字节(byte)为8比特(bit)。
