- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构讲义第1章绪论PPT课件
数据结构 DATA STRUCTURE; ;目录;C语言相关知识回顾;第一章 绪论;?非数值问题;1.1 什么是数据结构;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;1.2 基本概念和术语;小结;1.3 抽象数据类型的表示与实现;例:
ADT Triplet{
数据对象:D={e1,e2,e3 |e1,e2,e3∈Elemset(定义了关系运算的某个集合)}
数据关系:R1={〈e1,e2,e2,e3〉
基本操作:
InitTriplet(T,v1,v2,v3)
DestroyTriplet(T)
Get(T,i,e)
Put(T,i,e)
}ADT Triplet
;数据元素的表示
数据类型
typedef 定义???类型
算法的描述
类C语言
函数;1.3 抽象数据类型的表示与实现;1.3 抽象数据类型的表示与实现;1.3 抽象数据类型的表示与实现;1.4 算法和算法分析;1.4.2 算法设计的要求
要设计一个好的算法通常要考虑以下的要求。
⑴正确性(Correctness )算法应满足具体问题的需求。
⑵可读性(Readability)算法应该好读。以有利于阅读者对程序的理解。
⑶健壮性(Robustness)算法应具有容错处理。
⑷效率与低存储量要求 效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般,这两者与问题的规模有关。
;1.4.3 算法效率的度量
算法执行时间分析方法的分类:
事后统计
事前分析
度量方法
采用时间复杂度来估计算法的算法的执行时间
T(n)=O(f(n))
即:如果存在两个正常数c和n0,对于所有的n≥n0,有︱T(n) ︳≤c|f(n) ︳
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作渐近时间复杂度(Asymptotic Time Complexity),简称时间复杂度。;时间复杂度的求法:
基本操作(原操作)
语句的频度:语句执行的次数
定理:若A(n)=amn m +am-1nm-1+…+a1n+a0是一个m次多项式,则A(n)=O(nm)
方法:
确定基本操作,求各语句的频度之和,根据定理求出最后结果。;示例:;示例:
(b) for (i=1;i=n;++i)
{++x;s+=x;}
(c) for (j=1;j=n;++j)
for (k=1;k=n;k++)
{++x;s+=x;};常用的时间复杂度关系:
O(1)O(logn)O(n)O(nlogn)O(n2)O(n3)
… ? O(2n)O(n!)O(nn)
若算法中基本操作重复执行的次数随问题输入数据集不同而不同,这时可计算最坏情况下的时间复杂度或平均时间复杂度。;logn;1.4.3 时间复杂度;1.4.4算法的存储空间需求
空间复杂度:算法所需存储空间的度量,记作:
S(n)=O(f(n))
其中n为问题的规模(或大小)
一般只考查算法所需的辅助空间的大小作为算法所需空间的度量。; 1.4 空间复杂度;解法2
# define N 100
float evaluate (float coef[ ], float x , int n )
{ float f; int i;
for (f = coef[n], i=n-1; i=0; i --) f=f*x+coef[i];
return(f);
}
时间复杂度为O(n). 空间复杂度为O(1)
文档评论(0)