什么是算法
从计算机编程的角度来讲,算法是解决特定的问题的一套定义明确的指令集。它接受一组输入,并产生期望的输出。例如,
一个两数相加的算法:
- 获得两个数字的输入
- 使用
+
运算符将数字相加 - 显示计算结果
何为一个好算法
- 输入和输出应该被精确定义
- 算法中的每一个步骤都应该清晰明确,不存在歧义
- 在解决一个问题的众多不同方法中,算法应该是最为高效的。
- 算法不应包含计算机代码。相反,算法的编写方式应使其能够在不同的编程语言中使用。
算法例子
算法1: 相加用户输入的2个数字
步骤 1: 开始
步骤 2: 声明变量 num1, num2 和 sum
步骤 3: 读变量 num1 和 num2
步骤 4: num1 和 num2 相加并把结果赋值给sum. sum <- num1 + num2
步骤 5: 展示num
步骤 6: 结束
算法2: 在3个数字中找到最大的数字
步骤 1: 开始
步骤 2: 声明变量a, b和c
步骤 3: 读取变量a, b和c
步骤 4: 如果 a > b
如果 a > c
输出 a 是最大的数字
否则
输出 c 是最大的数字
否则
如果 b > c
输出 b 是最大的数字
否则
输出 c 是最大的数字
步骤 5: 停止
算法3: 求一元二次方程的根
步骤 1: 开始
步骤 2: 声明变量 a, b, c, D, x1, x2, rp 和 ip
步骤 3: 计算判别式 D <- b^2-4ac
步骤 4: 如果 D >= 0
x1 <- (-b + 根号下D) / 2a
x2 <- (-b - 根号下D) / 2a
输出 x1 和 x2 作为根
否则
计算实部和虚部
rp <- -b/2a
ip <- 根号下-D/2a
输出 rp+j(ip) 和 rp-j(ip) 作为根
步骤 5: 停止
算法4: 求一个数的阶乘
步骤 1: 开始
步骤 2: 声明变量n、阶乘factorial和i
步骤 3: 初始化变量
factorial <- 1
i <- 1
步骤 4: 读取n的值
步骤 5: 重复以下步骤直到 i = n
5.1: factorial <- factorial * i
5.2: i <- i + 1
步骤 6: 输出factorial
步骤 7: 结束
算法5:检查一个数是否为质数
步骤 1: 开始
步骤 2: 声明变量n、i、flag
步骤 3: 初始化变量
flag <- 1
i <- 2
步骤 4: 从用户输入读取n
步骤 5: 重复以下步骤直到 i=(n/2)
5.1 如果n➗i的余数等于0
flag <- 0
跳到 步骤 6
5.2 i <- i+1
步骤 6: 如果 flag = 0
输出n不是质数
否则
输出n是质数
步骤 7: 结束
算法6:找出小于 1000 的斐波那契数列
步骤 1: 开始
步骤 2: 声明变量first_term、second_term、temp
步骤 3: 初始化变量 first_term <- 0 second_term <- 1
步骤 4: 输出first_term和second_term
步骤 5: 重复以下步骤直到 second_term <= 1000
5.1: temp <- second_term
5.2: second_term <- second_term + first_term
5.3: first_term <- temp
5.4: 输出 second_term
步骤 6: 结束