
一起动脑筋 · 先看一个小故事
同样是给五张数字卡排序,女孩用手摆,机器人用程序排。它们能用同一个办法吗?
把过程摊开来看
- 问题卡片从小到大
- 算法反复挑出最小的
- 程序用 C++ 写出这些步骤
算法是解决问题的一套明确步骤;程序把步骤写成计算机可执行的形式。
同一个排序算法可以用纸笔演示,也可以写成不同语言的程序。就像同一份做菜办法,可以用不同语言记录。
01算法是什么?
算法(Algorithm)是解决问题的一组明确步骤。它关心的是“怎么做”,并不要求一定用某种编程语言写出来。
比如找最高分:先把第一个分数当当前最高分,再依次比较,遇到更高的就更新。
02程序是什么?
程序是用编程语言写出的、可以交给计算机执行的实现。真实程序通常还包括输入输出、数据组织、错误处理等。
03它们最大的区别是什么?
算法
解决问题的方法和步骤。
程序
把算法和其他需要的逻辑实现成可执行形式。
04一个算法可以写成很多程序吗?
可以。同一个排序算法,可以用 C++、Python、Java 等语言实现;同一种语言也能有不同写法。
05一个程序里会有很多算法吗?
当然。一个游戏里可能同时包含寻路、碰撞检测、排序和搜索等多个算法。
06算法为什么重要?
不同算法即使得到同样正确答案,速度和内存使用也可能差很多。
正确
能得到正确结果。
高效
用更少时间完成任务。
节省资源
合理使用内存等资源。
你已经知道了什么
- 算法是解决问题的明确步骤和方法。
- 程序是可执行实现,通常不只包含算法。
- 一个算法可以有很多种程序实现。
- 一个程序也可能同时包含很多算法。
- 算法不仅要正确,还常常需要考虑效率。
轮到你来试一试
如果把 C++ 程序改写成另一种语言,但挑最小数的步骤没变,算法变了吗?
想好了吗?点开看解释
没有。表达步骤的语言变了,解决问题的方法没变。若改成相邻卡片逐对交换,才换了排序方法。