女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩想从一排卡片里找数字 7。机器人提出:“从左边开始,一张一张检查。”这就是一个明确的办法。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 准备确定目标 7
  2. 检查当前卡片是不是 7
  3. 继续不是就看下一张
  4. 结束找到或全部看完

算法是一套解决问题的明确步骤。

步骤要能执行,也要有完成的条件。对这个有限卡片例子,最多检查所有卡片,就能报告找到或不存在。

01算法到底是什么?

算法(Algorithm)可以理解成:解决某一类问题的一套明确步骤。

例如“在一组数中找最大值”,一种算法是:先把第一个数当作当前最大值,然后从第二个数开始逐个比较,遇到更大的就更新。

02算法和程序有什么区别?

算法

关注“怎样解决问题”。

程序

用编程语言把算法和输入输出等内容实现出来。

同一个算法可以用 C++、Python 等不同语言实现。

03一个算法应该满足什么?

步骤明确

每一步做什么要说清楚。

能结束

对规定范围内的输入应在有限步骤后停止。

结果正确

满足题目要求。

适用范围清楚

知道它处理哪些输入。

04正确就够了吗?

不一定。两个算法都能得到正确答案,但一个可能需要 100 次操作,另一个可能需要 100 万次。

05算法一定要写成代码吗?

不需要。算法可以先用自然语言、流程图、伪代码表达,再写成程序。

把第一个数当作最大值
从第二个数开始:
    如果当前数更大,就更新最大值
输出最大值

06算法是不是越复杂越厉害?

不是。能用简单、清楚的方法正确解决问题,通常更好。

你已经知道了什么

  • 算法是解决一类问题的明确步骤。
  • 算法和程序不是同一个概念。
  • 算法应明确、可结束并得到正确结果。
  • 算法还需要考虑效率和适用范围。
  • 算法可以先不用代码表达。

下一篇:枚举:一个一个试

轮到你来试一试

全部卡片看完都没有 7,算法应一直再找,还是报告不存在?

想好了吗?点开看解释

报告不存在。结束条件不仅包括成功找到,也包括已经检查完全部可能位置。