第二章 算法 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.2 简单算法举例例:求两个数的和
step1:给定两个数的值
step2:做加法运算
step3:将结果保存
step4:输出结果
step1,2? x,3?y
step2,x+y ( 2+3)
step3,5? z
step4:输出 z
#include <stdio.h>
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 算法的特性
1,有穷性:一个算法包含有限的操作步骤
2,确定性:算法中的每一个步骤是确定的,含义是唯一的
3,有零个或多个输入
4,有一个或多个输出
5,有效性:算法中每一个步骤应能有效运行
2.4 算法的表示
1,用自然语言表示优点是使用日常用语,通俗易懂缺点是文字冗长,容易出现歧义
2,用流程图表示,用图框表示各种操作优点是直观形象,易于理解起止框处理框输入输出框判断框流程线连接 点注释框常用流程图符号
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中的数即为最大数。
输入一个数? max
1? i
输入 x
x?max?是 否
x? max
i+1? i
当 i < 9
输出 max
#include <stdio.h>
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!
开始置 t 的初值为 1
置 i 的初值为 2
当 i <= 5,执行下面操作,
使 t = t * i
使 i = i + 1
(循环到此结束 )
打印 t 的值结束或
BEGIN(算法开始 )
1 => t
2 => i
while i <= 5
{ t * i => t
i + 1 => i
}
print t
END(算法结束 )
2.5 结构化程序设计方法基本思路,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1、自顶向下
2、逐步细化
3、模块化设计
4、结构化编码需要解决的问题 P
子问题 p1 子问题 p2 子问题 p3
p12p11 p32p31 p33
设计 设计 设计 设计 设计 设计编码 编码 编码 编码 编码 编码