第二章算法a1 gorithm 2.1算法的概念 ■2.2简单算法举例 2.3算法的特性 2.4算法的表示 2.5结构化程序设计方法
第二章 算法 algorithm ◼ 2.1 算法的概念 ◼ 2.2 简单算法举例 ◼ 2.3 算法的特性 ◼ 2.4 算法的表示 ◼ 2.5 结构化程序设计方法
2.1算法的概念 例:求1+2+3++100=? 1、1+2,再加3,再加4.,最后加100,等于5050 2、100+(1+99)+(2+98)+.+(49+51)+50=100+49*100+50=5050 对操作的描述 程序=数据结构+算法 对数据的描述 算法分类: 数值运算算法一用于求数值解(如:求方程的根… ■非数值运算算法 多用于管理领域(如:图书管理、人事管理.)
2.1 算法的概念 程序=数据结构+算法 对数据的描述 对操作的描述 算法分类: ◼数值运算算法 ---- 用于求数值解(如:求方程的根…) ◼非数值运算算法 ---- 多用于管理领域(如:图书管理、人事管理…) 例:求1+2+3+…+100=? 1、1+2,再加3,再加4….,最后加100,等于5050 2、100+(1+99)+(2+98)+…+(49+51)+50=100+49*100+50=5050
2.2简单算法举例 例:求两个数的和 #include stepl:给定两个数的值 void main( 输出结果: step2:做加法运算 i int x, y, z; step3:将结果保存 y=3 2+3=5 step4:输出结果 Tx+y step1:2→x,3y printf(《z%dⅦn”,z); step2: X+y (2+3) printf(“%d+%d=%dn”,x,y,z); step3:5→z step4:输出z
2.2 简单算法举例 例:求两个数的和 step1:给定两个数的值 step2:做加法运算 step3:将结果保存 step4:输出结果 step1:2 → x ,3 → y step2:x+y (2+3) step3:5 → z step4:输出 z #include void main( ) { int x, y, z; x=2; y=3; z=x+y; printf(“z=%d\n”, z); printf(“%d+%d=%d\n”, x, y, z); } 输出结果: z=5 2+3=5
2.3算法的特性 有穷性:一个算法包含有限的操作步骤 2.确定性:算法中的每一个步骤是确定的,含义是唯一的 3.有零个或多个输入 4.有一个或多个输出 5.有效性:算法中每一个步骤应能有效运行
2.3 算法的特性 1. 有穷性:一个算法包含有限的操作步骤 2. 确定性:算法中的每一个步骤是确定的,含义是唯一的 3. 有零个或多个输入 4. 有一个或多个输出 5. 有效性:算法中每一个步骤应能有效运行
2.4算法的表示 1.用自然语言表示 优点是使用日常用语,通俗易懂 缺点是文字冗长,容易出现歧义 2.用流程图表示:用图框表示各种操作 优点是直观形象,易于理解
2.4 算法的表示 1. 用自然语言表示 优点是使用日常用语, 通俗易懂 缺点是文字冗长, 容易出现歧义 2. 用流程图表示: 用图框表示各种操作 优点是直观形象, 易于理解
起止框 输入输出框 判断框 处理框 流程线 连接点 注释框 常用流程图符号
起止框 处理框 输入输出框 判断框 流程线 连接点 注释框 常用流程图符号
3.三种基本结构(表示一个良好算法的基本单元) ①顺序结构②选择结构(分支结构)③循环结构(重复结构) While(当型)循环 Until(直到型)循环 A 成立 不成立 A A B A B 成立 不成立 不成立 成立 4.N-S流程图 AB 当P成立 A 成立 不成立 A 直到P成立 B
3. 三种基本结构(表示一个良好算法的基本单元) ①顺序结构 ②选择结构(分支结构) ③循环结构(重复结构) A B P A B 成立 不成立 成立 A P 不成立 A P 成立 不成立 4. N-S流程图 A B A B 成立 不成立 P A 当P成立 直到P成立 A While(当型)循环 Until(直到型)循环
例:输入10个数,找出其中最大的数,并输出。 step1:输入一个数,存放在一个变量max中; step2:设置用来累计比较次数的计数器i(也是一个变量 1→i; step3:输入一个数,存放在另一个变量x中; step4:比较max和x中的数,若x>max,则将x的值送入max, 否则,max的值不变; step5:i增加1,即i+1→i; step6:若i<9,则返回step3,继续执行, 否则输出max中的数,此时max中的数即为最大数
例:输入10个数,找出其中最大的数,并输出。 step1: 输入一个数,存放在一个变量max中; step2: 设置用来累计比较次数的计数器 i(也是一个变量) 1i; step3: 输入一个数,存放在另一个变量x中; step4: 比较max和x中的数,若x>max,则将x的值送入max, 否则,max的值不变; step5: i 增加1,即 i+1i ; step6: 若i<9,则返回step3,继续执行, 否则输出max中的数,此时max中的数即为最大数
输入一个数→max #include void main( →1 i int x, max, i 输入x scanf(%d”,&max); x>max? 是 否 i=1; do x→maX { scanf(“%d”,&x); i+1→i if(>max)max=x; i<9 i=i+1 输出 max while(i<9); printf(“max=%d”,max)
输入一个数 max 1 i 输入 x xmax? 是 否 x max i+1 i 当 i void main( ) { int x , max , i ; scanf(“%d”, &max); i=1; do { scanf(“%d”, &x); if (x>max) max=x; i=i+1; } while ( i<9) ; printf(“max=%d” , max) ; }
5、伪代码 介于自然语言与计算机语言之间,用文字与符号 来描述算法。 例:求5! 开始 BEGIN(算法开始) 置t的初值为1 置i的初值为2 2=>i 当it 使使 t=t xi i+1→>i i=i+1 (循环到此结束) print t 打印t的值 END(算法结束) 结束
5、伪代码 介于自然语言与计算机语言之间,用文字与符号 来描述算法。 例:求5! 开始 置 t 的初值为1 置 i 的初值为2 当 i t 2 => i while i t i + 1 => i } print t END(算法结束)