数据的分类
逻辑结构(抽象)
集合结构:集合中元素除了属于同一个集合外,没有其他关系
线性结构:线性结构中元素存在一对一的关系
树形结构:树形结构中元素是一对多的层次关系
图形结构:图形结构中元素存在多对多的关系
物理结构
顺序储存结构(适合查找和遍历):将数据元素放在地址连续的存储单元里,数据间的逻辑关系和物理关系是一致的。
链式存储结构(适合插入删除等操作):数据元素存储在任意单元里,数据之间不能反映逻辑关系,数据之间通过一个指针来指向元素的地址
时间复杂度
事前分析估算法
在编写程序前,用统计方法对算法进行估算,得出运行所消耗的时间取决于以下几个因素
算法采用的策略和方案
编译产生的代码质量
问题规模
机器执行指令的速度
算法复杂度规则:
算法函数中常常数可以忽略
最高次幂的常数因子可以忽略
最高次幂越小,算法效率越高
大O记法
常数阶O(1) 普通语句
线性阶O(n) 循环
平方阶O(n*n) 双层循环
立方阶 三层循环
对数阶 二分策略、二分查找
线性对数级别 分治思想、归并排序
指数 穷举查找、检查所有子集
复杂度低到高:
常数<对数<线性<线性对数<平方<立方