- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构第01章概述
数据结构 第一章 基础知识 数据结构 主讲人:蔡琼 数据对象:同类数据元素的集合称为数据对象。 例如:整型数据对象、英文字母数据对象、一个班级学生数据对象、一个年级学生数据对象。 数据结构:(带结构的数据元素的集合)由某一数据对象以及该对象中所有数据成员之间的关系组成。 记为:Data_S={D , R}。 有关数据结构的讨论一般涉及三方面的内容: ①数据的逻辑结构:数据成员以及它们相互之间的逻辑关系。常常简称为数据结构。 ②数据的存储结构:数据成员及其关系在计算机存储器内的存储表示。也称物理结构。 ③数据结构的相关操作及其实现。 1.3.2 数据的逻辑结构 数据的逻辑结构分为集合、线性结构和非线性结构: (集合、线性、树、图) 线性结构的特点是:在结构中所有成员都处于一个序列中,除开始和终端成员外,每一个成员有且仅有一个直接前驱和一个直接后继。线性结构包括数组、链表、栈、队列、优先级队列等等。 非线性结构的特点是:一个数据成员可能有零个、一个或多个直接前驱和直接后继。例如树、图或网络等都是典型的非线性结构。 例如:S={D , R} D={a,b,c,d,e} R1={a,b,b,c,c,d,d,e} R2={a,b,a,c,b,d,b,e} R3={a,b,a,c,d,a,e,c} 1.3.3 数据的存储结构 四类:顺序存储、链式存储、索引存储、散列存储 1、顺序:逻辑上相邻的结点存储在一组连续的存储单元中。 地址计算: Loc(i)=q+i*p 二维: 按行存放:Loc(i,j)=q+i*m+j 按列存放:Loc(i,j)=q+j*n+i 缺点:不便于修改,插入删除需要移动很多结点。 2、链式存储:分为静态和动态。 3、索引存储:根据结点的序号确定结点的存储地址的方法。 4、散列存储:通过散列函数计算出存储地址。例如:函数为:Loc(key)=asc(left(key,1)) % 8 时间复杂度的渐进表示法(大O法): (渐进时间复杂度?估算法) 比较: 时间复杂度:某个算法的时间消耗,它是该算法所求解问题规模n的函数。 渐进时间复杂度:当问题规模趋向无穷大时,该算法时间复杂度的数量级。 常见时间复杂度按数量级递增排列为: 常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、 平方阶O(n2)、立方阶O(n3)、k次方阶O(nk)、指数阶O(2n)、阶乘阶O(n!) 使用大O法规则: ①非零正常数都是同一数量级,记为O(1)。 ②多项式保留最高次幂:8n3+5n2+3n+2 =O(n3) ③多重循环取乘积:for(i=0;in;i++) for(j=0;jm;j++) =O(n*m) a[i][j]=0; ④并列程序段取大的: 算法分析举例 例1-1 求下面程序段的时间复杂度。 for (i=0; in; i++) for (j=0; jn; j++) x++; 例1-2 ++x; 算法分析举例 求下面程序段的时间复杂度。 例1-3 for (i=1; i=n; ++i) for (j=1; j=i-1; ++j) ++x; 例1-4 for (i=1; i=n; i=2*i) ++x; // -----基本操作的实现 void add( complex z1, complex z2, complex sum ) { // 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; } { 其它省略 } 1.5 算法和算法的衡量 一、算法 二、算法设计的原则 三、算法效率的衡量方法和准则 四、算法的存储空间需求 算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性: 1.有穷性 2.确定性 3.可行性 4.有输入 5.有输出 一、算法 1.有穷性 对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即: 算法中的每个步骤都能在有限时间内完成。 2.确定性 对于每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。 3.可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。 4.有输入 作为算法加工对象的量值
文档评论(0)