算法初步(以C为例).ppt

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

计算机算法初步 1. 算法的概念 利用计算机求解问题的一般过程 (1)问题分析阶段 (2)数据结构设计阶段 (3)算法设计阶段 (4)编码与调试阶段 算法描述 在计算机科学的发展过程中,人们已经提出了很多种类的算法描述方法。 一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。 还有一种算法的图形描述方式——流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。 常用流程图符号 例1:求解一元二次方程 问题分析 假设一元二次方程可以书写成ax2+bx+c=0。可以看出,任何一个一元二次方程都由三个系数a、b、c惟一确定,所以,首先需要用户输入三个系数,然后再根据一元二次方程的求解规则计算最终的结果,并将结果显示输出。 算法描述 程序代码 2. 穷举法 概述 穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。例如,从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。这种方法的基本思路就是一一列举每个可能性,逐个进行排查。因此,穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。 穷举法应用实例1:素数的判断 所谓素数是指仅能被1和自身整除,且大于等于2的数值。判断一个给定的数值是否是素数是穷举法的典型实例。 例2:判断给定整数是否是素数 。 问题分析 为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2~x-1之间的任何整数。这就需要一一列举出2~x-1之间的每个整数进行排查。 算法描述 程序代码 穷举法应用实例2:百钱买百鸡 “百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。 例3:百钱买百鸡。 问题分析 从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。 算法描述 程序代码 3. 递推与迭代法 概述 递推是计算机数值计算中的一个重要算法。其基本策略是将复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。在C程序中,利用for语句实现迭代的过程,可以认为是递推的一种特例。 采用递推法进行问题求解的关键在于找出递推公式和边界条件。 递推与迭代法应用实例1:等比数列求和 所谓等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。 本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。 例4:等比数列求和。 问题分析 等比数列的递推公式为: itemi = itemi-1 * ratio 后项等于前项乘以比例值 sumi = sumi-1 + itemi 前i项之和等于前i-1项之和加当前项 由于在重复上述递推计算之前,需要将第1项的值累加到sum中,所以,需要先将item存入sum中。 算法描述 程序代码 递推与迭代法应用实例3:求圆周率π 圆周率π的计算公式为: π = 4 – 4/3 + 4/5 – 4/7 +4/9 – 4/11 + … 在程序中,圆周率π应该用单精度类型float或双精度类型double来表示。而且有一定的精度要求。 例6:求圆周率π。 问题分析 圆周率π的计算公式为: π = 4 – 4/3 + 4/5 – 4/7 +4/9 – 4/11 + … 圆周率是通过将数列4、-4/3、4/5…求和得到的。在这个数列中,每个数据项的取值与前一项及该项的序号存在着一定的关系。 算法描述 程序代码 递推与迭代法应用实例4:按位分解整数 要求从键盘输入一个整数,然后将它的每一位分解成独立的数字字符并输出之。 例7:按位分解整数。 问题分析 可以利用程序设计语言提供的整除和求余运算实现将整数分解的目的。例如,对于整数7326,用7326/1000就得到了最高位7,而7326%1000得到了其余的位数326。但是,这种方法要求首先获得整数最高位的权,因此,算法应该先求整数最高位的权,然后从高向低逐个分离出每位数字。 算法描述 程序代码 #include stdi

文档评论(0)

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

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

1亿VIP精品文档

相关文档