
一起动脑筋 · 先看一个小故事
女孩想从一排卡片里找数字 7。机器人提出:“从左边开始,一张一张检查。”这就是一个明确的办法。
把过程摊开来看
- 准备确定目标 7
- 检查当前卡片是不是 7
- 继续不是就看下一张
- 结束找到或全部看完
算法是一套解决问题的明确步骤。
步骤要能执行,也要有完成的条件。对这个有限卡片例子,最多检查所有卡片,就能报告找到或不存在。
01算法到底是什么?
算法(Algorithm)可以理解成:解决某一类问题的一套明确步骤。
例如“在一组数中找最大值”,一种算法是:先把第一个数当作当前最大值,然后从第二个数开始逐个比较,遇到更大的就更新。
02算法和程序有什么区别?
算法
关注“怎样解决问题”。
程序
用编程语言把算法和输入输出等内容实现出来。
同一个算法可以用 C++、Python 等不同语言实现。
03一个算法应该满足什么?
步骤明确
每一步做什么要说清楚。
能结束
对规定范围内的输入应在有限步骤后停止。
结果正确
满足题目要求。
适用范围清楚
知道它处理哪些输入。
04正确就够了吗?
不一定。两个算法都能得到正确答案,但一个可能需要 100 次操作,另一个可能需要 100 万次。
05算法一定要写成代码吗?
不需要。算法可以先用自然语言、流程图、伪代码表达,再写成程序。
把第一个数当作最大值
从第二个数开始:
如果当前数更大,就更新最大值
输出最大值
06算法是不是越复杂越厉害?
不是。能用简单、清楚的方法正确解决问题,通常更好。
你已经知道了什么
- 算法是解决一类问题的明确步骤。
- 算法和程序不是同一个概念。
- 算法应明确、可结束并得到正确结果。
- 算法还需要考虑效率和适用范围。
- 算法可以先不用代码表达。
下一篇:枚举:一个一个试
轮到你来试一试
全部卡片看完都没有 7,算法应一直再找,还是报告不存在?
想好了吗?点开看解释
报告不存在。结束条件不仅包括成功找到,也包括已经检查完全部可能位置。