课程安排
一、数据结构与算法的重要性
数据结构:数据与数据间的关系
1.1、数据结构的研究内容
数据结构:研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
非数值计算问题中的数学模型不是数学方程,而是诸如树、图、表之类的具有逻辑关系的数据。
1.2、基础概念和术语
1、数据
2、数据元素
3、数据项
4、数据对象
数据对象:是性质相同的数据元素的集合
5、数据元素与数据对象
1.2.2数据结构
1、数据结构的 基本概念
2、数据结构包括以下三方面
1)数据元素之间的逻辑关系—逻辑结构
2)数据的物理结构/存储结构:数据元素以及关系在计算机内存中的表示(映像)
a.逻辑结构的概念
b.逻辑结构的种类
划分方法一
划分方法二
c.存储结构的种类
四种基本的存储结构
顺序存储结构
链式存储结构
1.2.3数据类型和抽象数据类型
1、数据类型
2、抽象数据类型
基本操作定义格式说明
1.4、算法和算法分析
算法的定义
算法的描述
算法与程序
程序=数据结构+算法
算法特性
算法设计的要求
衡量算法好坏的标准
满足算法设计的基本要求下,通过算法效率的高低来判断。
算法效率考虑方面:时间和空间
算法时间效率的度量
事前分析法
每条语句执行一次所需要的时间一般随机器而异,故可假设执行每条语句所需的时间均为单位时间,故在比较时间时,可以将该语句执行一次所需要的时间约去,仅比较每条语句频度之和。
例子:
每次最外层的for需要判断跳出循环时n+1的情况,故执行次数为n+1次。
算法时间幅度的渐进表示法
例如
先找出算法的消耗时间T(n)的同数量级函数(即n趋向正无穷大时,T(n)/f(n)的极限值=不为0的常数),假设辅助函数f(n)=n^3
算法时间复杂度的定义
找出对算法运行时间贡献最大的执行的函数
基本语句的寻找方法
根据上面推断同数量级函数:执行次数最多的函数
算法时间复杂度
计算复杂算法的算法复杂度的两个方法
加法法则:算法时间复杂度较大的即是。
算法时间效率的比较
尽量设计复杂度低的算法
算渐进空间复杂度
例子
算法1只用了一个临时变量,属于原地工作,空间复杂度为O(1)
算法2用了一个数组,大小与原数组一样,空间复杂度O(n)
算法1的空间效率更高。