0.逻辑结构和物理结构
数据结构分为:
- 逻辑结构:数据对象中数据元素之间的相互关系
- 物理结构:数据的逻辑结构在计算机中的存储形式
四大逻辑结构
- 集合结构:集合结构中的数据元素除了同属于一个集合外,他们之前没有别的关系
- 线性结构:线性结构中的数据元素之间是一对一的关系
- 树形结构:树形结构中的数据元素之间存在一种一对多(也存在一对一的关系)的层次关系(金字塔关系)
- 图形结构:图形结构的数据元素是多对多的关系
物理结构:
研究如何把数据元素存储到计算机的存储器中。
存储器:
针对内存而言的,像硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述。
数据元素的存储结构形式有两种:顺序存储和链式存储。
- 顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。 (例如数组)
- 链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的, 也可以是不连续的。链式存储结构的数据元素存储关系不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样子通过地址就可以找到相关联数据元素的位置。(1号数据元素指针指向2号数据元素,但是他们在存储单元里的位置可能不是这样的。
1.算法:
事前分析测量方法:
- 算法采用的策略、方案
- 编译产生的代码质量:编译期的优劣、编译期所产生的代码的优劣
- 问题的输入规模
- 机器执行指令的速度
由此可见,抛开计算机硬件、软件有关的因素, 一个程序的运行时间依赖于算法的好坏和问题的输入规模(就是输入量的多少)
研究算法的复杂度,侧重严重算法随着输入规模扩大增长量的一个抽象,而不是精确地定位需要执行多少次,因为如果这样的话,我们就得考虑回编译期优化等问题。 我们在分析一个算法的运行时间时,重要的是把基本操作的数量和输入模式关联起来。