数据结构与算法(吴跃)ch1.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法(吴跃)ch1

例如,“如果任一大于4的偶数都可以表示为两个奇素数之和,则执行B”,由于判断执行B的条件很难确定,所以该步不具有可行性; 算法步骤的粒度可以是很细的,细到基本语句、基本步骤,也可以是很粗的,但是可以通过逐步细化,最后细到可以实现,这就是算法设计中的逐步细化过程。 抽象数据类型与数据结构的关联 抽象数据类型一般包含数据元素、数据元素之间关系及操作三要素(D, R, O)。我们定义的数据结构包含四个元素(D,L,S,O),也包含数据元素D、数据元素之间关系L及操作O, 可以看到:抽象数据类型所包含的数据元素之间的关系仅仅是数据的逻辑结构L,而数据结构还包括数据的存储结构S。因此,可以说数据结构包括了抽象数据类型。 1.5 算法(Algorithm) 一、算法及特性 算法是求解特定问题的步骤的有限序列。 算法由步骤组成,每一个步骤表示一个操作或任务。 步骤序列是对问题求解过程的描述,按照步骤的顺序,完成步骤所规定的任务,就可以求解特定的问题。 第1章 绪论 算法可以用一个三元组来描述:A=(S,D,R) S是步骤的有限集合,S={s1,s2,……sn}; D是算法求解问题所涉及的数据元素集合,是算法的操作或处理的对象,包括可能的输入和算法产生的输出。 R是步骤之间的关系集合,由一些控制结构组成: 顺序结构,依次执行算法的各步骤,如执行步骤A然后执行步骤B; 分支结构(if C then A else B),如果条件C成立,则执行步骤A,否则执行步骤B; 循环结构(while–do或for–do),当条件C为真,执行步骤A,或者重复执行步骤A n次; 子过程和递归结构:调用已有的算法; 算法有四个重要特性: 1.有穷性 2.确定性 3.可行性 4.功能性(输入、输出) 1.有穷性 对于任意一组合法输入值,在执行有穷步骤之后算法一定能结束。 2.确定性:在当前输入数据下,算法每步的任务是确切无二义性的,算法下一步骤执行的顺序也是确定的; 例如,“如果A3 则执行A+B,如果A6 则执行A-B”,对这样的算法步骤,当3A6时,算法的下一步骤就不确定了; 3.可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现。 例如,“如果任一大于4的偶数都可以表示为两个奇素数之和,则执行B”,由于判断执行B的条件很难确定,所以该步不具有可行性; 4.功能性(输入、输出特性):算法都是用作求解特定问题的,不解决问题的步骤序列不是算法,即对任意合法的0或多个输入,完成各步骤的任务,算法所产生的1或多个输出,就是对特定问题所求解的结果。 有的书称为算法的“输入”和“输出”特性。 二、算法描述 算法可以用多种方式来描述: 可以用自然语言描述,还可以用框图、 程序设计语言等来描述。 例:需要解决的特定的问题是: 在一个班级里查找是否有名叫“张三”的学生。 算法描述1:(自然语言描述) Step1: 将该班名册中的第一个学生作为当前学生; Step2: 将当前学生的姓名与“张三”进行比较: 如果相符,则输出“yes”,表示找到,算法结束;否则,执行Step3; Step3: 如果当前学生不是该班最后一个学生, 则取下一个学生作为当前学生,执行Step2; 否则,输出“no”,表示没有找到,算法结束。 功能:“在一个班级里查找是否有名叫“张三”的学生”,如果有,输出“yes”;如果没有,则输出“no”。 三个步骤组成:其中有一个从Step3到Step2的循环,但是经过有限步执行后,算法都会结束。 分析:当第一个学生就是张三时,算法只执行了Step1和Step2各一次就结束,算法执行的步骤最少;当最后一个学生是“张三”或该班没有“张三”时,算法执行的步骤最多。 算法描述2:(框图描述) 将第一个作为当前学生 结束 是最后一个? 输出yes 输出no 取下一个作为当前学生 y y n n 开始 是张三? 三、算法分析 好的算法应该具备以下特性: 正确性:正确性是对算法能否正确求解问题的评价,是首要和最基本的特性; 可读性:可读性是对算法描述的思路、层次的评价。好的算法应该是思路清晰、层次分明、阅读和修改容易; 健壮性:健壮性是对算法在异常情况下处理能力的评价。好的算法在出现异常或非法数据时,在操作不当时,算法都能作适当处理; 高效性:算法的效率是对求解同样问题的不同算法所占用的时间或空间的评价。好的算法应该是高效的,即求解问题所占用存储空间少,执行时间短; 第1章 绪论 算法效率——用依据该算法编制的程序在计算机上执行所消耗的时间来度量 1.事后统计——利用计算机内记时功能,不同算法的程序可以用一组或多组相同的统计数据区分 缺点:?必须先运行依据算法

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档