菜谱比喻算法的插画

“程序 = 算法 + 数据结构”,算法是程序的“灵魂”。可算法到底是什么?想象一份菜谱:准备食材、切菜、下锅、调味,一步步做下来就是一道菜——算法就是解决问题的“菜谱”。

一、什么是算法

算法是一系列明确、有限的步骤,用于解决特定问题或完成特定任务。在计算机科学中,算法告诉计算机“如何一步步解决问题”。

举个例子——让计算机“在一组数字中找到最大值”:

  1. 假设第一个数字是最大值;
  2. 依次检查后续每个数字;
  3. 如果遇到比当前最大值更大的数字,就更新最大值;
  4. 检查完所有数字后,输出最终的最大值。

二、算法的五大特征

特征含义例子
有穷性必须在有限步骤后结束,不会无限循环计算 1 到 100 的和,步骤是有限的
确定性每个步骤清晰明确,没有歧义“如果 a 大于 b 则输出 a”明确;“如果 a 比较大”就不明确
可行性每个步骤能通过计算机基本操作实现可以是“比较两个数”,不能是“预测明天天气”(除非有数据和方法)
输入可以有零个或多个输入(要处理的数据)排序算法需要输入一组数据;算圆周率的算法可能不需要输入
输出至少有一个输出(问题的结果)排序输出有序列表;搜索输出目标位置或“未找到”
💡 为什么算法重要?效率关键(快速排序比冒泡排序快得多)、计算机的核心(程序的灵魂)、现实应用(搜索排序、导航路径规划、AI 决策都依赖高效算法)。

三、算法的描述方法

常用三种方法:自然语言、流程图、伪代码。

1. 自然语言描述:用日常语言描述步骤。优点是容易理解;缺点是易产生歧义、冗长,不利于直接转成代码。
例(求两数中的较大值):步骤1:输入 a、b;步骤2:比较大小;步骤3:若 a>b 则输出 a,否则输出 b。

2. 流程图描述:用标准化图形符号和流程线表示执行过程。

流程图基本符号插画

符号形状用途
起止框椭圆形算法的开始或结束
处理框矩形计算、赋值等操作
判断框菱形条件判断,一个入口、两个出口(是/否)
输入/输出框平行四边形数据的输入或输出
流程线带箭头直线步骤的执行顺序

优点:直观、结构化,清晰展示顺序、分支、循环;缺点:画起来费时,复杂算法会显得杂乱。

3. 伪代码描述:介于自然语言和编程语言之间,用类似编程的结构(if、for、while)但忽略语法细节,可读性强、易转成真实代码;缺点是没有统一标准。

输入 a, b
如果 a > b 则
    输出 a
否则
    输出 b
结束如果

四、机器语言、汇编语言、高级语言

机器语言汇编语言高级语言
长相0 和 1 的二进制序列英文助记符(MOV、ADD、JMP)接近自然语言的英文单词(if、for、print)
特点CPU 能直接执行的唯一语言;面向特定机器;对人类极不友好;执行最快一条汇编约对应一条机器指令;仍绑定特定 CPU;需汇编器翻译一条语句对应多条机器指令;跨平台可移植;开发效率高
例子10110000 01100001MOV AL, 61hprint("你好")
用在哪由翻译工具生成,程序员一般不直接写操作系统、驱动、嵌入式、性能优化绝大多数应用开发(网站、App、数据分析)
📝 记住:无论用什么语言写,最终都要变成机器语言才能执行!

五、动手练一练

练习 1:用自然语言写出“求三个数中的最大值”的算法步骤,并检查它是否满足五大特征。

练习 2:把“求两数中的较大值”画成流程图(用上起止框、输入/输出框、判断框、处理框和流程线)。

点击查看参考答案

练习 1 参考:① 输入 a、b、c,设 max=a;② 若 b>max 则 max=b;③ 若 c>max 则 max=c;④ 输出 max。有限步骤、每步明确、可执行、有输入有输出,满足五大特征。

练习 2 参考:椭圆“开始”→ 平行四边形“输入 a,b”→ 菱形“a>b?”→ 是→矩形“输出 a”→椭圆“结束”;否→矩形“输出 b”→椭圆“结束”。

🎉 这一课你学会了:算法的定义与五大特征、三种描述方法、三类程序设计语言。下一课,我们看看数据量大到离谱时会发生什么——大数据!
More

相关教程