数据结构与算法笔记 —— 绪论
一. 计算与算法
- 计算机的本质是计算,计算是寻找对象的规律,并从中找到技巧。计算的目标是高效,低耗。
- 算法就是借助一定的工具,在一定的规则下,以明确而机械的形式来进行的计算。
- 算法的主要特性:
- 输入,输出
- 正确性:算法能够正确地解决问题
- 确定性:所有步骤均由基本的操作组成
- 可行性:基本操作均能够实现
- 有穷性:所有操作在时间的允许范围内
- 好的算法:效率最高(速度尽可能快,存储空间尽可能少)同时又兼顾正确(算法能够正确地解决问题)、健壮(容错性好)、可读(易于阅读)。
二. 计算模型
- 一个好的程序不仅要考虑数据结构与算法,还要考虑效率,即:(数据结构+算法)*效率 = 程序 => 应用。
- 算法分析的两个重要指标
- 正确性:算法功能是否与问题一致
- 成本:时间消耗与存储空间消耗
- 定义:T(n) 为一个算法在最坏的情况下所需要操作的步骤。不同算法之间的好坏主要看T(n)的大小,T(n)是屏蔽了计算机硬件差异,语言差异,编译差异等差异之后的理想平台下的运行指标,如大O,大Ω,大Θ等。
- 一般的计算模型有图灵模型与RAM模型,它们均将算法的运算时间转换成算法执行的基本操作次数。
三. 图灵机模型
- 图灵机的三个组成要件
- 有限长的字母表: cell中存储的内容
- 读写头:指示当前位置,可读可写。
- 状态表:当前读写头的状态
- 图灵机状态转换过程 transform(q,c;f,L/R,p)
- q:当前状态
- c:读写头所指cell当前的内容
- f:读写头所指cell改写的内容
- L/R:向左/右移位
- p:读写头转换后的状态
四. RAM 模型
- 与图灵机类似,均假设有无限空间
- 由一系列顺序编号寄存器组成,但总数无限
- 算法所运行的时间转换成算法运算时的次数
五. 数据结构
数据结构示意图
- 数据对象由数据元素组成,数据元素由数据项组成,数据项是最基本的单位
- 数据结构是一系列数据元素之间的关系
数据结构的逻辑结构
- 集合结构
- 线性结构
- 树结构
- 图结构
- 数据结构的物理结构
- 顺序存储结构
- 链式存储结构
六. 大O记号等
- 算法的效率主要看时间消耗与存储空间消耗,这里我们屏蔽存储空间的消耗,仅仅考虑时间的消耗。
- 大O的定义:T(n)=O(f(n)) ,f(n)为一个函数。当c>0,T(n)<c∗f(n),即大O记号表示T(n)的一个上界,其性质为:
- O(n)=O(c∗n)
- O(n2+n)=O(n2)
- 大Ω的定义:T(n