第一数据结构与算法剖析.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文档。上传文档
查看更多
第一章 数据结构与算法 本章主要内容 算法概述 数据结构 线性表及其顺序存储结构 栈和队列 线性链表 树与二叉树 查找技术 排序技术 1.1 算法 算法的定义 算法的设计 算法的表示 算法的评价 算法和程序 程序设计 是利用计算机解决问题的全过程 程序设计的过程: 计算机求解问题的步骤 确定并理解问题; 寻找解决问题的方法与步骤,并将其表示成算法(Algorithm) ; 使用某种程序设计语言描述该算法(编程), 并进行调试; 运行程序,获得问题的解答; 进行评估,改进算法和程序 算法和程序 程序设计的第一步是问题分析 问题分析 问题一:统计一个班级的学生考试成绩,并选出优秀学生 多少科目的成绩? 优秀的定义(总分?平均分?第一名?前五名?) 数据如何录入?如何输出? 这是初学者认为最简单而在实际工程中最难的工作。在软件工程中被称作“需求分析” 算法和程序 算法设计 算法的概念 要使计算机完成某一问题的解题任务,首先必须针对该问题设计一个解题步骤,然后再据此编写程序。这里所说的解题步骤就是“算法”。 算法与程序不同,它是问题求解规则的一种过程描述。在算法中要精确定义一系列规则,这些规则指定了相应的操作顺序,以便在有限的步骤内得到所求问题的解答。 算法定义 算法-解决问题的方法和步骤 例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢? 分析: 方法明确而有序 按提供的条件进行操作 任何人均可仿照进行(共享智能) 算法和程序 算法无处不再 例1:Word如何在文档中查找用户指定的词语? 例2:EXCEL中如何将表格内容排序? 例3:如何把彩色图片转换为灰度(黑白)图片? 例4:如何在硬盘中找到用户指定的文件? 例5:媒体播放器如何把MP3文件转换成动听的音乐? 例6:搜索引擎如何找到用户需要的网页? 算法的通用性 算法所解决的是一类问题而不是一个特定的问题,例如 排序(sort) : 包括表格内容的排序,文件夹中文件的排序等 排序方式也可以按数字、文字或日期等排序 查找(search): 可以在文档中查找某个单词或在硬盘中查找某个文件,也可在Web上查找某个网页等等 开发计算机应用的核心是:根据实际问题给出解题的算法,然后再将该算法在计算机上实现(即开发成为软件) 实现算法考虑的问题 实现算法考虑的问题: 如何确定算法-算法设计 如何表示算法-算法表示 如何使算法更有效-算法的复杂性设计 算法的实现贯穿在整个计算机求解问题的过程当中 算法的特点 算法的基本特征 可行性:运算必须在计算机能力范围内可以运行 确定性:运算操作必须清楚明确,无二义性 有穷性:算法必须在有限步后终止 拥有足够情报(数据):即计算数据必须完备 其他: 输入:有0~多个输入,包括外界输入和初始化 输出:至少有一个输出 算法的特点练习 算法的有穷性是指 A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 下列叙述中正确的是 A)算法就是程序 B)设计算法时只需要考虑数据结构的设计 C)设计算法时只需要考虑结果的可靠性 D)以上三种说法都不对 算法设计基本方法 算法的设计原则 由粗到细 由抽象到具体 逐步求精 算法设计基本方法 常用算法的设计方法 列举法(穷举法、枚举法) 例:判断素数 归纳法 例: Fibonacci数列1,1,2,3,5,8,13,... 归纳结果:Fn = Fn-1 + Fn-2 ( n ≥ 3 ) 递推法 是归纳法最常使用的一种 例:求级数和 递归法 回溯法 算法的表示 算法表示方法: 文字说明法,缺点: 容易产生歧义,很难 “精确”地进行表达 叙述冗长,很难清楚地表达算法的逻辑流程 流程图 流程图由符号和箭头构成,描述了算法所执行操作的顺序及执行操作的条件 流程图比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误 伪代码(一种介于自然语言和程序设计语言之间的文字和符号表达工具) 算法设计 算法设计举例:-对包含n个整数元素的数组A进行升序排序。 直接选择算法:文字表示 从所有整数中选取最小的,交换到第一个数位置上; 从剩下未排整数中选出最小的,交换到已排好序列的最后一个数后面; 反复执行②,直到所有整数都放到已排好的序列中。 算法的表示举例 伪代码法: 将原始数据放在数组A中; FOR i = 1 To n { 确定A[i] 到A[n]中最小整数的位置,设为j ; 交换A[i]和[j] ; i = i +1 } 算法评价 算法评价指判断算法的好坏 正确性 指给定有效输入后,经过有限时间的计算,

文档评论(0)

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

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

1亿VIP精品文档

相关文档