c语言对算法的认识,《认识C语言算法》PPT课件.ppt

第2章 认识C语言算法,瑞士联邦技术学院的沃思博士曾经提出过一个闻名的公式:算法+数据结构=程序。由此可以看出程序设计的核心是算法描述与数据结构的定义。,2.1 算法的概念,算法是对特定问题求解步骤的描述。算法广义上指的是解决问题的方法,在日常生活中解决问题时经常用到算法,例如,厨师做菜的时候要按照一定的做菜程序进行即按菜谱做,那么菜谱就是厨师做菜的算法。 算法具有以下5个特点。 1.确定性 2.有限性 3.有效性 4.有零个或多个输入 5.有一个或多个输出,2.2 算法分析,算法用于求解一个给定的可计算的或可解决的问题,不同的程序员编写出来的算法不同。从例2-1可以看出,例子中使用的算法虽然能够得到正确的结果,但是算法步骤繁琐,不可取。,,【例2-2】改进例2-1中的算法。 解1:设i表示加数,sum表示整数的和以及被加数,用循环方法求和,算法描述如下。 S1:令sum=0,i=1; S2:令sum=sum+i,i=i+2; S3:如果i≤100,执行S2;否则算法结束,sum为所求结果。 使用循环求和的算法能够将50个步骤的程序转化为3步,算法描述很简单。求100以内的奇数和还可以利用数学中的等差数列求和公式进行。 解决同一个问题,算法不是唯一的,有的比较复杂,如例2-1,有的比较简捷,如例2-2。因此在选用算法的时候要首先对算法进行分析,预测这一算法适合在什么样的环境中能够有效地运行,比较解决同一问题的不同算法,择优使用。,2.3 算法的表示,随着计算机语言的发展,算法的表示方法也表现出多样性,目前常用的算法表示方法有自然语言、伪代码、流程图、N-S图等,每种表示方法都有各自的适用范围,所以要根据需求选择适当的算法表示方法。 1.自然语言表示法 自然语言描述算法是用文字或者加上一些必要的数学符号描述特定问题的解决策略。 2.伪代码表示法 伪代码表示法是用近似自然语言和高级语言描述算法。伪代码区别于程序代码的是,它利用一系列非形式化的符号来表示算法。,,3.流程图表示法 流程图表示法是用图形元素描述算法,自然语言表示方法是用文字描述算法,遇到复杂的问题文字就显得笨拙,流程图表示法很好地弥补了这一不足,算法步骤运用图形表示流程结构,一目了然。 4.N-S图表示法 流程图表示法的流程线能够清晰地表示程序的执行操作,但有些流程线不是必需的,将流程线省略并把流程结构放在一个大框内,用这种形式表示流程结构就叫做N-S图,通常也被称为盒图。,2.4 结构化程序设计的图形表示,结构化程序设计是一种程序设计技术,也是一种程序设计思想。流程图和N-S图是一种常用的算法表示方法,但是它们在表示结构程序设计时的图形结构不同,各有优缺点。,2.4.1 什么是结构化程序设计,C语言程序的设计是按照一定的算法进行编写的,在算法一章中我们了解到各种算法语句的优缺点,在传统流程图中流程线随意性太大,如果一个程序中多处使用这种转移情况,将会导致程序流程无处可寻,杂乱无章。 结构化程序设计方法是目前被广泛采用的一种程序设计方法。它将程序结构分成一个个的模块和处理过程,使程序层次分明、结构清晰,提高了程序设计的质量和效率。 流程图表示程序的执行操作清晰易懂;N-S图则严谨规范,这两种图形结构都是结构化程序设计中常的表示方法。顺序结构、选择结构、循环结构的图形。,2.4.2 用流程图表示结构化程序设计,流程图表示法使程序的执行操作清晰易懂;N-S图法则严谨规范,这两种图形结构都是结构化程序设计中常见的表示方法。,2.5 本章小结,本章讲解了程序设计思想——算法。在程序设计中,算法是指计算机求解某个问题而采用的具体方法、步骤。算法具有五个特点:确定性、有效性、有限性、有零个或多个输入、有一个或多个输出。 算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序,如何判断一个算法是否是一个好的算法有五点可依据的性质:健壮性、正确性、可读性以及时间复杂度和空间复杂度。 一个算法可以用多种不同的方法来描述,有自然语言、伪代码、流程图、N-S图等,每种表示方法都有自己的优缺点,可以根据不同的需要选择适当的表示方法。,

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法设计与分析》目录: 第一篇引入篇 第1章算法概述1.1用计算机求解问题与算法 1.1.1用计算机求解问题的步骤 1.1.2算法及其要素和特性 1.1.3算法设计及基本方法 1.1.4从算法到实现 1.2算法描述 1.2.1算法描述简介 1.2.2算法描述约定 1.2.3一个简单问题的求解过程 1.3现代常用算法概览* 1.3.1压缩算法 1.3.2加密算法 1.3.3人工智能算法 1.3.4并行算法 1.3.5其他实用算法 第2章算法分析基础 2.1算法分析体系及计量 2.1.1算法分析的评价体系 2.1.2算法的时间复杂性 2.1.3算法的空间复杂性 2.1.4NP完全性问题 2.2算法分析实例 2.2.1非递归算法分析 2.2.2递归算法分析 2.2.3提高算法质量 第二篇基础篇 第3章算法基本工具和优化技巧3.1循环与递归 3.1.1循环设计要点 3.1.2递归设计要点 3.1.3循环与递归的比较 3.2算法与数据结构 3.2.1原始信息与处理结果的对应存储 3.2.2数组使信息有序化 3.2.3数组记录状态信息 3.2.4大整数存储及运算 3.2.5构造趣味矩阵 3.3优化算法的基本技巧 3.3.1算术运算的妙用 3.3.2标志量的妙用 3.3.3信息数字化 3.4优化算法的数学模型 3.4.1杨辉三角形的应用 3.4.2最大公约数的应用 3.4.3公倍数的应用 3.4.4斐波那契数列的应用 3.4.5递推关系求解方程 习题 第三篇核心篇 第4章基本的算法策略4.1迭代算法 4.1.1递推法 4.1.2倒推法 4.1.3迭代法解方程 4.2蛮力法 4.2.1枚举法 4.2.2其他范例 4.3分治算法 4.3.1分治算法框架 4.3.2二分法 4.3.3二分法变异 4.3.4其他分治方法 4.4贪婪算法 4.4.1可绝对贪婪问题 4.4.2相对或近似贪婪问题 4.4.3贪婪策略算法设计框架 4.5动态规划 4.5.1认识动态规划 4.5.2动态规划算法设计框架 4.5.3突出阶段性的动态规划应用 4.5.4突出递推的动态规划应用 4.6算法策略间的比较 4.6.1不同算法策略特点小结 4.6.2算法策略间的关联 4.6.3算法策略侧重的问题类型 习题 第5章图的搜索算法 5.1图搜索概述 5.1.1图及其术语 5.1.2图搜索及其术语 5.2广度优先搜索 5.2.1算法框架 5.2.2广度优先搜索的应用 5.3深度优先搜索 5.3.1算法框架 5.3.2深度优先搜索的应用 5.4回溯法 5.4.1认识回溯法 5.4.2回溯法算法框架 5.4.3应用1——基本的回溯搜索 5.4.4应用2——排列及排列树的回溯搜索 5.4.5应用3——最优化问题的回溯搜索 5.5分支限界法 5.5.1分支搜索算法 5.5.2分支限界搜索算法 5.5.3算法框架 5.6 图的搜索算法小结 习题 第四篇应用篇 第6章算法设计实践6.1循环赛日程表 6.2求3个数的最小公倍数 6.3猴子选大王 6.4最大子段和问题 6.5背包问题 6.5.1与利润无关的背包问题 6.5.2与利润有关的背包问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值