数据:是计算机操作对象的总称
数据元素:是数据结构中讨论的基本单位。
数据项:是数据结构中讨论的最小单位。
数据元素可以是数据项的集合。
数据结构:相互之间存在某种逻辑关系的数据元素的集合。
数据结构又分为两类:逻辑结构、存储结构。
逻辑结构:数据之间的逻辑关系。包括:线性结构、树形结构、图状结构、集合结构四种。
- 线性结构:有且只有一个开始节点和终端节点;除了开始节点和终端节点,其他节点都有唯一一个直接前驱和直接后继。如线性表中的顺序表、链表、栈等。
- 树形结构:有且只有一个开始节点;有多个终端节点;除了开始节点外,其他节点都有唯一一个直接前驱;除了终端节点,其他节点都有一个及其以上的直接后继。如二叉树。
- 网状结构:数据元素之间多对多关系,每个节点都有一个及其以上的直接前驱和直接后继。
- 集合结构:数据元素除了同属于一个集合外,没有其他关系。
存储结构:数据之间的逻辑结构的计算机实现,是逻辑结构的存储映像。包括:顺序存储、链式存储、索引存储、散列(哈希表)存储四种。
- 顺序存储:把数据元素放在地址联系存储单元里,地址的前后顺序就表示了数据元素的逻辑顺序,即:数据之间的逻辑关系和存储关系是一一对应的。
- 链式存储:在计算机中用一组任意的存储单元存储数据元素(存储单元可以是是连续的,也可以是不连续的),每一个数据元素包括两部分,一个是数据域,用来存放数据,另一个是指针域,用来存放下一个数据元素的物理地址。
因此:
- 同一个逻辑结构可以对应多种存储方式。
- 同样的运算,在不同的存储结构中,其实现过程是不同的。
- 同一种逻辑结构,有多种逻辑结构表示方法。
- 同一种逻辑结构,同一个运算,在不同的存储方式下实现,其运算效率可能不同。
- 不同数据结构的逻辑结构可能是相同的。
数据结构求解问题的过程:
- 问题描述
- 设计存储结构
- 算法设计
- 算法分析
算法:为了解决某类问题而规定的一个有限的操作序列。
算法的特性:
- 有穷性:有限步骤,有限时间
- 确定性:在任何条件下,算法都有唯一一条执行路径
- 可行性:可以通过已经实现的基本操作运算有限次实现
- 有输入
- 有输出
算法设计原则:
- 正确性
- 可读性
- 健壮性
- 高效率与低存储量
时间复杂度:随着问题规模n的增长,算法执行时间的增长率和 f(n)的增长率相同,记为T(n)=O(f(n))。
空间复杂度:随着问题规模的n的增大,算法运行所需要的存储量的增长率和g(n)的增长率相同,记为S(n)=O(g(n))。
时间复杂度和空间复杂度,我可以理解,但是计算上还是不是太理解,所以在这里不展开详细说,后面会补一篇专门的博客。
我很少写博客,语言组织能力也欠佳,有描述不恰当的地方,欢迎大家提出,共勉之。