- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题求解(Problem Solving) * 证明正确性 分析算法 设计程序 理解问题 精确解或近似解 选择数据结构 算法设计策略 设计算法 * 算法≠程序 算法描述:自然语言,流程图,程序设计语言,伪代码 用各种算法描述方法所描述的同一算法,该算法的功用是一样的,允许在算法的描述和实现方法上有所不同。 本书中采用类C++伪代码语言描述算法。 算法描述 人们的生产活动和日常生活离不开算法,都在自觉不自觉地使用算法,例如人们到商店购买物品,会首先确定购买哪些物品,准备好所需的钱,然后确定到哪些商场选购、怎样去商场、行走的路线,若物品的质量好如何处理,对物品不满意又怎样处理,购买物品后做什么等。以上购物的算法是用自然语言描述的,也可以用其他描述方法描述该算法。 问题表示 设Input和Output是两个集合。一个问题是一个关系R?Input?Output,Input称为问题R的输入集合,Input的每个元素称为R的一个输入,Output称为问题R的输出或结果集合,Output的每个元素称为R的一个结果。 一个算法面向一类问题,而不是仅求解问题的一个或几个实例。 * 排序问题 例如,排序(SORT)问题定义如下: -Input=?a1,....,an ? ai是实数? -output=?b1,....,bn ? bi是实数,且b1?...?bn? -R=?(a1,...,an,b1,...,bn)?a1,...,an?Input, b1,...,bn?output,?a1,...,an?= ?b1,...,bn?} * 算法示例—插入排序算法 a?0,...,n-1? = 5,2,4,6,1,3 a?0,...,n-1? = 5,2,4,6,1,3 a?0,...,n-1? = 2,5,4,6,1,3 a?0,...,n-1? = 2,4,5,6,1,3 a?0,...,n-1? = 2,4,5,6,1,3 a?0,...,n-1? = 1,2,4,5,6,3 a?0,...,n-1? = 1,2,3,4,5,6 * 算法的思想:扑克牌游戏 算法描述 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置中 重复步骤2 * templateclass Type void InsertionSort(Type *a, int n) // 数组a中包含了n个待排序的数. { Type key; for (int i = 1; i n; i++) { key=a[i]; // Insert a[i] into the sorted sequence a[0..i-1]. int j=i-1; while( j=0 a[j]key ) { a[j+1]=a[j]; j--; } a[j+1]=key; } } 插入排序算法 * 算法的正确性分析 正确的算法:对于每一个输入都最终停止,而且产生正确的输出。 不正确算法: ①不停止(在某个输入上) ②对所有输入都停止,但对某输入产生不正确结果 近似算法 ①对所有输入都停止 ②产生近似正确的解或产生不多的不正确解 算法正确性证明 证明算法对所有输入都停止 证明对每个输入都产生正确结果 * 调试程序?程序正确性证明! 程序调试只能证明程序有错,不能证明程序无错误! 提纲 一、算法与程序 二、算法复杂性分析 * 算法复杂性 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 * 算法分析的目的: 设计算法——设计出复杂性尽可能低的算法 选择算法——在多种算法中选择其中复杂性最低者 算法复杂性分析 算法复杂性 = 算法所需要的计算机资源。所需资源量越多则复杂性越高,反之所需资源量越少则复杂性越低。其中最为重要的是: 时间复杂性T(n);空间复杂性S(n)。 其中n是问题的规模(输入大小)。 示
您可能关注的文档
最近下载
- 《高等数学(上册)》(阳平华)645-4教案 第六章 第25课 定积分的换元积分法和分部积分法.doc VIP
- 《高等数学(上册)》(阳平华)645-4教案 第六章 第24课 微积分基本公式.doc VIP
- 天津市南仓中学2024-2025学年高二上学期10月月考数学试题(无答案).docx VIP
- 欧洲规范-NF P94-078-中文版.pdf VIP
- 腔隙性脑梗死课件.pptx VIP
- 过顶板破碎段施工安全技术措施.doc VIP
- 2025年湖北省十一校届高三语文联考“世界的馈赠”考场作文评析与升格训练.docx VIP
- 腔隙性脑梗死演示课件.pptx VIP
- 2024第三季度医疗质量与安全管理委员会会议记录[1].docx VIP
- 天津市南仓中学2024-2025学年高二上学期10月月考物理试题(无答案).docx VIP
文档评论(0)