CH02,CH03-数据结构入门合编.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构 动态数组建立和释放 Point* p = new Point[100]; //建立下列有 100个点的数组 delete [ ]p; 算法分析 需要考察算法的性质,比较不同算法的优劣,理解一个算法的适应范围。算法分析:度量算法性质的过程 最常用的算法度量特性是: ①空间代价(空间复杂性):被解决问题的规模(以某种单位计)为n时,某求解算法所需存储空间按某种单位为S( n),称该算法的空间代价(空间复杂性)为S( n) ②时间代价(时间复杂性):当问题规模(以某种单位)为n时,算法所耗时间以某种单位计算为T( n),则称该算法的时间代价(时间复杂性)为T( n) 三个重要概念: * 问题规模 * 空间单位 * 时间单位 需要根据实际问题的 情况确定。 定义:设对一切(问题规模) n ≥0的整数有一个非负函数T(n),若存在正常数c和整数n0,且对任意n≥ n0,有T(n) ≤c ● f(n),那么就说T(n)是f(n)的大O表示,记为T(n)=O(f(n))。 这时也说该算法的时间(或空间)代价的增长率为f(n)。 也就是说,当n充分大时,该算法所需时间(空间)不大于f(n) 的某常数倍 9、大O记法 举例2:T(n)=8n+128,证明T(n)=O(n2) 显然对一切n≥0有一非负函数T(n), 假定C=1,那么8n+128≤n2,(n+8)(n-16) ≥0 由于(n+8)0,因此(n-16) ≥0,由此推出n0=16, 也就是说当n ≥16时, 8n+128≤n2 ,T(n)=O(n2)-上界 举例1:T(n)=3n3,证明T(n)=O(n3) 显然对一切n≥0有一非负函数T(n), 假定C=6,那么3n3≤6n3, 由此推出n0=0, 也就是说当n ≥0时, 3n3≤6n3,T(n)=O(n3)-上确界 9、大O记法 举例3 : 求两个n阶方阵的乘积C = A?B void MatrixMultiply ( int A[n][n], int B[n][n], int C[n][n] ) { for ( int i = 0; i n; i++ ) for ( int j = 0; j n; j++ ) { C[i][j] = 0; for ( int k = 0; k n; k++ ) C[i][j] = C[i][j] + A[i][k] * B[k][j]; } } 2n3 + 3n2 + 2n +1 T(n)=O(n3) … n+1 … n(n+1) … n2 … n2(n+1) … n3 9、大O记法 O(1) O(logn) O(n) O(n2) O(2n) 常数/对数/线性/平方/指数 最坏情况时间复杂性 ? 平均时间复杂性 ? 最好情况时间复杂性(不太有用) 对空间复杂性也可以有类似考虑 考虑 ??? 9、大O记法 算法时间复杂性的计算规则 1. 加法规则(顺序复合) 算法分为两部分时,复杂性是两部分的复杂性之和 T(n) = T1(n) + T2(n) = O(f1(n)) + O(f2(n)) = O(max(f1(n), f2(n))) 2. 乘法规则(循环) 循环T1(n) 次,每次T2(n) 时间,则 T(n) = T1(n)×T2(n) = O(f1(n)) ×O(f2(n))= O(f1(n)×f2(n)) 9、大O记法 例:矩阵乘法 Cn×n = An×n × Bn×n for(i=0; in; i++) for(j=0; jn; j++) { c[i][j]=0; for(k=0; kn; k++) c[i][j] = c[i][j]+a[i][k]*b[k][j]; } T(n) = O(f1(n)×f2(n)×(O(1)+O(n))) = O(f1(n))×O(f2(n))×O(n) = O(n)×O(n)×O(n) = O(n3) 9、大O记法 10、如何学习数据结构 a. 用户自定义 user defined b. STL (标准C++库) /library STL就是Standard Template Library,标准模板库 ,是一个高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。 xxxxx xxxxx 蒋莉

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档