每日科普 · 2026-09-16 周三
考研 408 × 求职面试
知识点 · 算法设计与分析 · 基础
算法的定义与五个基本特性
算法(Algorithm)是解决某一特定问题的一组明确、有限的操作步骤,是程序设计的灵魂。通俗地说,算法就是「做事的方法」:给定输入,经过一系列确定的处理,最终得到输出。它必须满足五个基本特性:
1. 有穷性:算法在执行有限步骤后必须结束,不能无限循环下去。
2. 确定性:每一条指令含义唯一,相同的输入必然得到相同的结果,不含歧义。
3. 可行性:每一步操作都能通过已实现的基本运算有限次完成,切实可做。
4. 输入:算法有零个或多个输入,用于描述运算对象的初始状态。
5. 输出:算法有一个或多个输出,即对输入处理后的结果,没有输出就失去了意义。
其中,有穷性和确定性是算法区别于普通「计算过程」的关键。注意:程序可以不满足有穷性(如操作系统常驻运行),而算法必须有穷。
每日一题 · 算法设计与分析
算法的定义与五个基本特性
下列关于算法五个基本特性的说法,正确的是( )。
A. 算法可以没有输入,但必须至少有一个输出
B. 算法中每条指令可以允许存在少量二义性
C. 算法只要在有限步骤内结束即可,不要求每步可行
D. 一个算法必须在有限时间内执行,且输入可以有多个
解析
选A。本题考查五个基本特性的准确内涵。输入可为0个或多个,但输出至少要有1个,否则算法无意义,故A正确;确定性要求指令无二义性,B错;可行性要求每步都能有效执行,C错;D中说「输入可以有多个」本身没错,但表述不全面且后半句与「输出至少一个」混淆,整句并非对特性的准确完整判断,故选A。做题时抓住「输出≥1、指令唯一、每步可行、有限步结束」这几个关键词即可。
面试小贴士 · 算法设计与分析
算法的定义与五个基本特性
面试官常问「算法和程序的区别」「五个特性中最重要的是哪个」。答题先给定义,再逐条点特性,并强调程序可不满足有穷性而算法必须满足。易错点:把「确定性」误答成「正确性」,或漏掉「输出至少有一个」。
代码实现 · C
代码示例
#include <stdio.h>
/* 求数组最大值的算法:体现输入、输出、确定性、有穷性、可行性 */
int findMax(int a[], int n) { /* 输入:数组a和长度n */
int max = a[0]; /* 确定性:初值唯一 */
int i;
for (i = 1; i < n; i++) { /* 循环有限次,满足有穷性 */
if (a[i] > max) { /* 每步都能执行,满足可行性 */
max = a[i];
}
}
return max; /* 输出:返回最大值 */
}
int main(void) {
int data[] = {3, 7, 2, 9, 5};
int n = sizeof(data) / sizeof(data[0]);
printf("max = %d\n", findMax(data, n));
return 0;
}