- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构细补班材料
1、时间复杂度的计算和一些基本概念
什么是数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,表示为:
Data_Structure=(D, S)
D:元素有限集 还分成数值类型和非数值类型
S:关系有限集
数据(data)——所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。
数据元素(data element)——是数据的基本单位,具有完整确定的实际意义(又称元素、结点,顶点、记录等)。
数据项(Data item)——构成数据元素的项目。是具有独立含义的最小标识单位(又称字段、域、属性 等)。
逻辑结构
数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。逻辑结构可细分为4类:
集合结构: 仅同属一个集合
线性结构: 一对一(1:1) 线性
树 结 构: 一对多(1:n) 非线性
图结构: 多对多 (m:n) 非线性
物理结构
物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。
存储结构可分为4大类:
顺序存储结构
链式存储结构
索引存储结构
散列存储结构
数据的运算
数据的运算是在数据的逻辑结构上定义的操作算法。它在数据的存储结构上实现。
最常用的数据运算有5种:
插入、删除、修改、查找、排序
抽象数据类型
抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的操作。
算法
算法是解决某一特定类型问题的有限运算序列。是一系列输入转换为输出的计算步骤。
算法有5个基本特性:有穷性、确定性、可行性、输入和输出
算法评价有4个指标:运行时间、占用空间、正确性和简单性
评价指标中的运行时间,就是用时间复杂度来衡量的。
时间复杂度
表现形式:O(f(n))
渐进符号(O)的定义:当且仅当存在一个正的常数 C,使得对所有的 n 3 n0 ,有 f(n) £ Cg(n),则f(n) = O(g(n))
3n+2=O(n) /* 3n+2£4n for n32 */
3n+3=O(n) /* 3n+3£4n for n33 */
100n+6=O(n) /* 100n+6£101n for n310 */
10n2+4n+2=O(n2) /* 10n2+4n+2£11n2 for n35 */
6*2n+n2=O(2n) /* 6*2n+n2 £7*2n for n34 */
常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、
线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。
下面我们通过例子加以说明,让大家碰到问题时知道如何去解决。
1、设三个函数f,g,h分别为 f(n)=100n^3+n^2+1000 , g(n)=25n^3+5000n^2 , h(n)=n^1.5+5000nlgn请判断下列关系是否成立:(1) f(n)=O(g(n))(2) g(n)=O(f(n))(3) h(n)=O(n^1.5)(4) h(n)=O(nlgn)◆ (1)成立。题中由于两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是 一个常数,所以这个关系式是成立的。◆ (2)成立。与上同理。◆ (3)成立。与上同理。◆ (4)不成立。由于当n→∞时n^1.5比nlgn递增的快,所以h(n)与nlgn的比值不是常数,故不成立。
2、设n为正整数,利用大O记号,将下列程序段的执行时间表示为n的函数。(1) i=1; k=0while(in){ k=k+10*i;i++;}解答:T(n)=n-1, T(n)=O(n), 这个函数是按线性阶递增的。(2) x=n; // n1while (x=(y+1)*(y+1))y++;解答:T(n)=n1/2 ,T(n)=O(n1/2),最坏的情况是y=0,那么循环的次数是n1/2次,这是一个按平方根阶递增的函数。(3) x=91; y=100;while(y0)if(x100){x=x-10;y--;}else x++;解答: T(n)=O(1), 这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。
2、线性结构
逻辑结构:
1.描述: 线性表是由n (n=0)个数据元素(结点)a1,a2,….,ai,….,an组成的有限序列。其中,数据元素
原创力文档


文档评论(0)