算法基础插画

考点清单

  • 算法的定义与五大特征:有穷性、确定性、输入、输出、可行性
  • 三种描述方式:自然语言、流程图、伪代码(各有什么优缺点)
  • 流程图符号:起止框、处理框、判断框、输入输出框、流程线
  • 三种基本结构:顺序、分支、循环(当型与直到型的区别)
  • 读流程图/读程序写结果——本课的核心题型
  • 常见算法思想:枚举、解析、排序(冒泡)、查找(顺序查找、二分查找及前提)

一、什么是算法

算法是解决问题的一系列明确、有限的步骤。做菜的菜谱、导航规划的路线,本质都是算法。对算法的五点要求叫五大特征:

特征含义反例(不满足会怎样)
有穷性步数有限,能结束死循环不是合格算法
确定性每一步含义唯一,没有歧义"加适量盐"就不确定
输入可以有 0 个或多个输入—
输出至少有 1 个输出只算不给结果没意义
可行性每一步都能实际执行"心想事成"不可行

选择题常把某个特征的描述改错一个字让你找茬,认准这五个词本身,先过一遍含义。

二、流程图:算法的"图纸"

同一个算法有三种描述方式:自然语言(通俗易懂,但容易有歧义)、流程图(直观清晰,考试最爱)、伪代码(介于自然语言和程序之间,简洁)。

流程图符号就五个,形状不能认错:

符号形状名称用途
圆角矩形(跑道形)起止框算法的开始与结束
矩形处理框计算、赋值等操作
菱形判断框条件判断,有两个出口(是/否)
平行四边形输入输出框输入数据、输出结果
箭头线流程线表示执行顺序

菱形最特殊:一个进口、两个出口,这是分支和循环能"拐弯"的原因。

三、三种基本结构

任何复杂的算法都能拆成三种基本结构拼起来:

  • 顺序结构:一步接一步,不拐弯。
  • 分支结构:遇到判断框,按条件走不同的路(比如:成绩≥60 输出"及格",否则输出"不及格")。
  • 循环结构:一段步骤反复执行,直到条件不满足。循环有两型,区别是考试重点:
  • 当型循环:先判断、后执行——条件不成立时,循环体可能一次都不执行。
  • 直到型循环:先执行、后判断——循环体至少执行一次。

四、读流程图写结果(核心题型,教你跟踪法)

这类题不难,但必须动手。方法叫跟踪表:列出每个变量,看着流程图一步步走,随时把变量的新值记下来。

例题:某流程图如下(文字版):开始 → s=0,i=1 → 判断 i≤5?是 → s=s+i,i=i+1,回到判断;否 → 输出 s → 结束。求输出。

跟踪表(只记关键步):

第几轮i执行后 s
110+1=1
221+2=3
333+3=6
446+4=10
5510+5=15
—6i>5 退出,输出 15

看出门道没有:这就是在算 1+2+3+4+5。考试里的流程图十有八九是求和、求最值、计数这老三样,跟踪表一步步记,绝不会错。切忌心算跳步——跳步是这类题丢分的头号原因。

五、三种算法思想

枚举(穷举):把所有可能逐一列出来验证。比如找 1~100 里的质数,就是逐个试除。特点:笨但可靠,适合范围小的问题。

解析:找出数学公式直接算。比如已知半径求圆面积,不用试,直接 πr²。特点:快,但要有公式可用。

排序与查找(各记一个代表):

  • 冒泡排序:相邻两个比一比,大的往后沉。一趟下来最大值到达末尾。例:[5, 3, 4, 1] 冒泡一趟:5 与 3 换 → [3,5,4,1];5 与 4 换 → [3,4,5,1];5 与 1 换 → [3,4,1,5]。
  • 顺序查找:从第一个挨个找到尾(你在 Python 课写小管家时用的就是它)。
  • 二分查找:每次砍掉一半,效率高得多,但有个硬前提:数据必须已经排好序。例:在 [3,7,12,18,25,31,42] 里找 25:中间是 18,比 25 小 → 看右半;在 [25,31,42] 里中间是 31,比 25 大 → 看左半;剩下 [25],找到,共比较 3 次。

易错点提醒

1. 判断框是菱形、两个出口;输入输出框是平行四边形,别和处理框(矩形)认混。

2. 当型与直到型的区别就一句话:先判断还是先执行——决定循环体最少执行几次(0 次还是 1 次)。

3. 二分查找的前提是有序,无序数据只能顺序查找。

4. 跟踪变量时,赋值是"用新值覆盖旧值",s=s+i 不是方程,别去"解"它。

自测 10 题(先做,再点开对答案)

1. 下列哪一项不是算法的特征( )

A. 有穷性 B. 确定性 C. 无限性 D. 可行性

2. 流程图中表示"判断"的符号是( )

A. 矩形 B. 菱形 C. 平行四边形 D. 圆角矩形

3. 流程图中数据的输入、输出用( )表示

A. 矩形 B. 菱形 C. 平行四边形 D. 圆

4. 按例题的流程图(s=s+i,i 从 1 到 5),若把判断条件改成 i≤3,输出是( )

A. 3 B. 6 C. 10 D. 15

5. 下列不属于算法三种基本结构的是( )

A. 顺序结构 B. 分支结构 C. 循环结构 D. 递归结构

6. "把所有可能情况逐一列举并检验"描述的是( )

A. 解析法 B. 枚举法 C. 二分法 D. 递归法

7. 使用二分查找的前提是数据必须( )

A. 数量足够多 B. 已经排好序 C. 全是整数 D. 没有重复

8. 对 [5, 3, 4, 1] 按升序冒泡一趟后,结果是( )

A. [3, 4, 1, 5] B. [1, 3, 4, 5] C. [3, 5, 4, 1] D. [5, 3, 4, 1]

9. 用自然语言描述算法的主要缺点是( )

A. 太简洁 B. 容易产生歧义 C. 不能描述循环 D. 无法给人看

10. 在一列数中找最大值,通常的算法是( )

A. 逐个比较,始终保留当前见过的最大者 B. 把所有数相加除以个数

C. 只看第一个和最后一个 D. 随机抽取一个

参考答案(点开)

1. C(算法必须在有限步内结束)

2. B

3. C

4. B(1+2+3=6)

5. D

6. B

7. B

8. A

9. B

10. A

下一课预告:Python 程序识读——读程序写结果,把 Python 线学过的东西换成考试题型再过一遍。

More

相关教程