1_数据结构课程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* main() {float a,b,c,d,x1,x2; cinabc; d=b*b-4*a*c; if(d0) { x1=(-b+sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a);    coutx1x2; } else if (d==0) { x1=x2=-b/(2*a); coutx1x2; } else cout无实根; } 自然语言描述的算法 C语言描述的算法 1. 输入a,b,c 2. 数据变换 3. 输出x1,x2 2-1. 计算判别式d 2-2. 根据d的值进行不同处理  2-2-1:if d0 x1=… x2=… 2-2-2:if d=0 x1=x2=… 2-2-3:if d0 …. * 二、算法的特性 确定性:每一种运算必须要有确切的定义,无二义性 能行性:运算都是基本运算,原理上能在有限时间内完成 输入:有0个或多个输入 输出:一个或多个输出 有穷性:在执行了有穷步运算后终止 * 三、算法化求解问题的过程 * 四、算法的描述 流程图 伪代码 程序设计语言 * 五、算法设计策略 Brute force Divide and conquer Decrease and conquer Transform and conquer Greedy approach Dynamic programming Backtracking and Branch and bound Space and time tradeoffs * 六、算法的评价 衡量算法优劣的标准 正确性(correctness) 可读性(readability) 健壮性(robustness) 效率 * 4.2 算法效率分析 算法有关的问题: 正确性 时间效率 空间效率 最优性(算法优化) 方法: 理论分析 经验分析 算法复杂性是算法运行所需要的计算机资源的量. 资源:时间资源、空间资源 这个量应该只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。如果分别用N、I和A表示算法要解问题的规模、算法的输入和算法本身,而且用C表示复杂性,那么,应该有C=F(N,I,A)。 一般把时间复杂性和空间复杂性分开,并分别用T和S来表示,则    T=T(N,I) S=S(N,I) 。  (通常,让A隐含在复杂性函数名当中) * 一. 算法的理论分析框架 * 问题的规模基本操作 问题规模 几乎所有的算法,对于规模更大的输入数据量,都需要更长的运行时间。 例如,100个数据的排序比10个数据的排序时间要长;2个10阶矩阵的相乘与2个3阶矩阵相乘所需时间要长。 基本操作 * 问题 输入规模的度量 基本操作 在有n个元素的表中搜索关键字 表中元素个数 n 关键字比较 两个浮点数矩阵相乘 矩阵维数 浮点数相乘 计算 an N 浮点数相乘 图问题 顶点数和/或边数 顶点或边的遍历 输入规模和基本操作示例 * 增长量级(速度) 执行时间与问题规模的关系 T=T(n) * 最坏、最好、平均情况效率 在很多情况下,基本操作执行次数不仅仅与输入数据规模有关,而且还与输入数据的原始组织方式有关。 最好情况时间复杂度 最坏情况时间复杂度 平均情况时间复杂度 * 时间复杂度函数的渐进阶 引入三个新概念: 大 O(f(n))记号==》上界 大Ω(f(n))记号==》下界 大Θ(f(n))记号==》上界和下界之间 最坏情况时间复杂度: * 例:线性表的顺序查找算法 算法:顺序查找算法 int SeqSearch(A[1..n],Key) {i=1; while(i=n A[i]=!Key) i=i+1; if i=n return i; else return -1; } 1.本算法的基本操作 比较操作 2.问题的输入规模 线性表的大小n 线性表A[1..n]的结构不同,要查找的关键字key的值不同,则基本操作执行次数也是不一样的。 * 最坏情况:Tworst(n)=n 最好情况:Tbest(n)=1 平均情况: 查找成功的概率是p(0p1) 线性表中的每个元素以相同的概率被匹配 平均情况下基本操作的次数 * 二. 非递归算法的数学分析 分析非递归算法效率的一般步骤 决定用哪个输入参数作为输入规模的度

文档评论(0)

金不换 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档