第二章程序的灵魂一算法 算法( Algorithm) 算法+数据结构=程序
第二章 程序的灵魂—算法 算法+数据结构=程序 算法(Algorithm)
示例程序 maino int a, b, cr scanf(“gd%d”&a,&b); c=ai a=bi printf((“a=%db=%d”rab);
main() { int a,b,c; scanf(“%d,%d”,&a,&b); c=a; a=b; b=c; printf(“a=%d,b=%d”,a,b); … } 示例程序一:
示例程序二 int max(int xint y) int zi if (x>y)z=X; else Z=yi return Zi
示例程序二: int max(int x,int y) { int z; if (x>y) z=x; else z=y; return z; }
算法的定义 算法〓操作+控制结构 算法是指程序的中心思想; 算法不是指数值计算; 算法是程序的灵魂
算法的定义 算法=操作+控制结构 算法是指程序的中心思想; 算法不是指数值计算; 算法是程序的灵魂;
2.2简单算法举例 求1*2*3*4*5**10 s1:使p=1 s2:使I=2 s3:使p*乘积仍放在变量p中p*->p s4:使工的值加1即I+1->I s5:如果I不大于10返回重新执行S3及其后 的步骤S4和S5;否则计算结東 s6:输出乘积的值p
2.2 简单算法举例 S1: 使p=1 S2: 使I=2 S3: 使p*I,乘积仍放在变量p中,p*I -> p S4: 使I的值加1,即I+1 -> I S5: 如果I不大于10,返回重新执行S3及其后 的步骤S4和S5;否则计算结束 S6: 输出乘积的值p 求1*2*3*4*5*…*10
例24 求1-1/2+1/3-1/4+.+1/99-1/100 S1: sign=1 S2: sum=1 ss: deno S4: sign =(-1)*sign S5: term=sign*(1/deno) S6: sum=+term S7: denosdeno+1 s8: if deno<=100返回S4香则输出sum并结束
例2.4 求1-1/2+1/3-1/4+…+1/99-1/100 S1: sign=1 S2: sum=1 S3: deno=2 S4: sign=(-1)*sign S5: term=sign*(1/deno) S6: sum=sum+term S7: deno=deno+1 S8: if deno<=100 返回S4;否则输出sum并结束
2.3算法的特性 有穷性,解题算法是一有穷动作序列 确定性每个步骤应当是确定的没有歧义 有零个或多个输入 有一个或多个输出 有效性
◼ 有穷性,解题算法是一有穷动作序列 ◼ 确定性,每个步骤应当是确定的,没有歧义 ◼ 有零个或多个输入 ◼ 有一个或多个输出 ◼ 有效性 2.3 算法的特性
24算法的表达方式 1,自然语言表示算法 2流程图表示; 3伪代码方式
2.4 算法的表达方式 1,自然语言表示算法; 2,流程图表示; 3,伪代码方式;
用流程图表示算法 1、流程图(p20) 用一些图框表示各种类型的操作,用线表示这 些操作的执行顺序。(图框举例如下图) 处理框 输入输出框 判断框
用流程图表示算法 1、流程图(p20) 用一些图框表示各种类型的操作,用线表示这 些操作的执行顺序。(图框举例如下图) 处理框 输入输出框 判断框
基本程序结构 传统的流程图的弊端? ※顺序结构(顺序执行) ※选择结构(比较判断) ※循环结构或称重复结构(反复执行)
基本程序结构 ※ 顺序结构(顺序执行) ※ 选择结构(比较判断) ※ 循环结构或称重复结构(反复执行) 传统的流程图的弊端?