逻辑结构与物理结构
逻辑结构
指数据对象中数据元素之间的相互关系。分为四种:
- 集合结构:数据元素除了同一属性属于一个集合外,他们之间没有其他关系。
- 线性结构:数据元素之间是一对一的关系。
- 树形结构:数据元素之间存在一对多的层次关系。
- 图形结构:数据元素是多对多的关系。
逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。
物理结构
指数据的逻辑结构在计算机中的存储形式。
数据元素的存储结构形式有两种:
- 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
- 链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
抽象数据类型
在C语言中,按照取值的不同,数据类型分类两类:
- 原子类型:是不可以再分解的基础类型,包括整型、字符型等。
- 结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干整型数据组成的。
抽象数据类型:指一个数学模型及定义在该模型上的一组操作。
算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法时间复杂度:
- O(1):常数阶
- O(n):线性阶
- O(n^2):平方阶
- O(logn):对数阶
- O(nlogn):nlogn阶
- O(n^3):立方阶
- O(2^n):指数阶
从小到大的顺序为:
常数阶 < 对数阶 < 线性阶 < nlogn阶 < 平方阶 < 立方阶 < 指数阶
推导大O阶方法
- 用常数1取代运行时间中的所有加法常数
- 在修改后的运行次数函数中,只保留最高阶项
- 如果最高阶项存在且不是1,则去除与这个项目相乘的常数
得到的结果就是大O阶