清华大学与数据结构 .pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
清华大学与数据结构

* 例:设有两个算法在同一机器上运行,其执行时间分别为 100n2 和 2n,问:要使前者快于后者,n 至少要取多大? 解答: 问题是找出满足 100n2 2n 的最小的n。用试探法: n = 13时,100n2 = 16900 2n = 8192 n = 14时,100n2 = 19600 2n = 16384 n = 15时,100n2 = 22500 2n = 32768 取 n = 15 满足要求。//渐进分析与某些常系数的影响 * 小结 数据结构的概念与表示 数据的基本逻辑结构与分类 数据的四种基本存储结构 抽象数据类型 算法的定义与五种特性 时间复杂度的渐进表示法 *     Ω表示法 大Ω表示 当且仅当存在正常数c和n0, 使得T(n)≥c g(n) 对所有 n≥n0都成立, 则称g(n) 给出了T(n)的一个下界。记为   T(n)= Ω(g(n))  大Ω表示法是对算法效率的一种乐观估计,对于规模为n的任意输入,算法的运行时间都不会低于Ω(g(n))。 *     Θ表示法 如果存在正常数 ab, n0, 和一个函数h(n) 使得对所有 n≥n0 , 都有 , a*h(n) ≤ T(n) ≤ b*h(n) 则称h(n) 给出了T(n)的一个确界。记为   T(n)= Θ(h(n))  Θ表示是对算法效率的一种准确估计,对于规模为n的任意输入,算法的运行时间都与Θ(h(n))同阶。 * ?记号的其他表示 T(n) = ?(h(n)) 当且仅当 T(n) = O(h(n)) 且 T(n) = ?(h(n)) (证明方法) O ? ? T(n) 0 f(n)  O、?, ?表示法的图形示意: * 1.4 算法定义 定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列 特性: 输入 有0个或多个输入 输出 有一个或多个输出(处理结果) 确定性 每步定义都是确切无歧义的 有穷性 算法应在执行有穷步后结束 能行性 每一步运算应足够基本 * 几点说明 注意算法与计算方法的区别 具有算法的其它特征, 但不具有有穷性的特性 计算方法可以只保证理论上收敛; 算法与程序的区别 程序可以处于无休止的“等待”循环中; 算法描述可以有多种形式,如伪码、框图、表格、图形等 * 事例学习:选择排序问题 明确问题:排序后关键字呈递增(非递减)排列 解决方案:逐个选择当前的最小元素 算法框架: for (int i = 0; i n-1; i++) { //n-1趟 //从a[i]检查到a[n-1]; //若最小元素为a[k], 则将a[i]与a[k]交换; } 细化程序:程序 SelectSort 算法设计 自顶向下,逐步求精 * void selectSort ( int a[ ], const int n ) { //对n个元素a[0],a[1],…,a[n-1]按递增顺序排序 for (int i = 0; i n-1; i++) { int k = i; //从a[i]查到a[n-1], 找最小元素 其位置在k for (int j = i+1; j n; j++) if (a[j] a[k]) k = j; int temp = a[i]; a[i] = a[k]; a[k] = temp; } } //有改进余地(何时必须交换) * 算法简单性能分析与度量 算法的性能标准 算法的后期测试 算法的事前估计 * 算法的性能标准 正确性 (Correctness ) 算法应正确执行预定的功能和性能要求。 可读性(Readability) 算法应该容易阅读。以有利于阅读者对程序的理解。 效率(Efficiency) 效率指的是算法执行的时间和空间利用率。通常这两者与问题的规模有关。 健壮性 (Robustness) 算法应具有容错处理的功能。当输入非法数据时,算法应对其作出反应,而不应产生莫名其妙的输出结果。 * 算法的后期测试 对一个算法要作出全面的分析大致可分成两个阶段进行,即事前分析和事后测试 事前分析要求事前求出该算法的一个时间界限函数。 事后测试则要求在算法执行后通过算法执行的时间和实际占用空间的统计资料来分析。 事后分析要求在算法

文档评论(0)

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

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

1亿VIP精品文档

相关文档