逻辑结构:
1.集合结构:数据元素只是同属于一个集合
2.线性结构:一对一关系
3.树形结构:一对多的关系
4.图形结构:数据元素是多对多的关系
物理结构:
又叫存储结构,是指数据的逻辑结构在计算机中的存储形式
顺序存储结构:数组结构,连续的存储单元,数据的逻辑关系和物理关系一致
链式存储结构:任意的存储单元,数据的逻辑关系和物理关系不一致。
1.算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
2.算法有5个特性:
(1)输入:算法有零个或多个输入
(2)输出:算法至少有一个输出
(3)有穷性
(4)确定性:
(6)可行性
3.算法设计的要求:
正确性:错误说明,没有语法错误,合法输入有合法输出
可读性:便于阅读、理解和交流
健壮性:不容易崩溃
时间效率高和存储量低
算法效率的度量方法:
效率高即是算法的执行时间短
事后统计方法:用计时器对每个算法计时
事前分析估计方法:编写算法前用数学统计方法估计效率
因素:1.算法策略,方案
2.编译产生的代码质量
3.问题的输入规模
4.机器执行指令的速度
算法的复杂度:侧重研究算法随着输入规模扩大增长量的一个抽象
函数的渐进增长:忽略所加常数,最高次项的系数可视为1,应该关注的主项的阶数
算法的时间复杂度:执行次数T(n)随规模n的变化情况,确定T(n)的数量及
T(n) = O(f(n)),执行次数和执行时间成正比
大O记法:T(n)增长最慢的是最优算法
对到方法:抛弃一些常数系数,抛弃低阶项
例如:常数阶O(1);
线性阶:直线增长O(n)
平方阶:O(n^2)嵌套(n*(n+1)/2
对数阶:2^x = n,得到x = log(2)n;所以是O(logn)
立方阶
指数阶
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) << O(n!) < O(n^n)
最坏情况与平均情况
我们所提的执行时间是最坏运行时间
算法的空间复杂度:内存存储大小
可以用空间换取时间