女孩和机器人一起思考

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

同样是给五张数字卡排序,女孩用手摆,机器人用程序排。它们能用同一个办法吗?

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 问题卡片从小到大
  2. 算法反复挑出最小的
  3. 程序用 C++ 写出这些步骤

算法是解决问题的一套明确步骤;程序把步骤写成计算机可执行的形式。

同一个排序算法可以用纸笔演示,也可以写成不同语言的程序。就像同一份做菜办法,可以用不同语言记录。

01算法是什么?

算法(Algorithm)是解决问题的一组明确步骤。它关心的是“怎么做”,并不要求一定用某种编程语言写出来。

比如找最高分:先把第一个分数当当前最高分,再依次比较,遇到更高的就更新。

02程序是什么?

程序是用编程语言写出的、可以交给计算机执行的实现。真实程序通常还包括输入输出、数据组织、错误处理等。

03它们最大的区别是什么?

算法

解决问题的方法和步骤。

程序

把算法和其他需要的逻辑实现成可执行形式。

04一个算法可以写成很多程序吗?

可以。同一个排序算法,可以用 C++、Python、Java 等语言实现;同一种语言也能有不同写法。

05一个程序里会有很多算法吗?

当然。一个游戏里可能同时包含寻路、碰撞检测、排序和搜索等多个算法。

06算法为什么重要?

不同算法即使得到同样正确答案,速度和内存使用也可能差很多。

正确

能得到正确结果。

高效

用更少时间完成任务。

节省资源

合理使用内存等资源。

你已经知道了什么

  • 算法是解决问题的明确步骤和方法。
  • 程序是可执行实现,通常不只包含算法。
  • 一个算法可以有很多种程序实现。
  • 一个程序也可能同时包含很多算法。
  • 算法不仅要正确,还常常需要考虑效率。

轮到你来试一试

如果把 C++ 程序改写成另一种语言,但挑最小数的步骤没变,算法变了吗?

想好了吗?点开看解释

没有。表达步骤的语言变了,解决问题的方法没变。若改成相邻卡片逐对交换,才换了排序方法。