介绍
“算法”是计算机科学与信息技术领域的核心概念,简单来说,算法就是解决特定问题的一系列清晰、有序、有限的操作步骤。它不仅存在于计算机中,也是我们解决日常问题的逻辑方法。
定义
算法是对问题求解过程的精准描述,是将输入转化为输出的计算规则集合。无论用代码、流程图还是自然语言描述,只要能明确、无歧义地指导完成任务,都可称为算法。
本质
解决问题的逻辑流程,是程序的灵魂(程序=算法+数据结构)。
例子
有以下身高的学生:
1.72
1.65
1.79
1.63
1.85
1.6
1.93
1.68
按照从小到大的顺序进行排列,执行的方式就是算法
特性
一个有效的算法必须满足以下特征,缺一不可:
- 有穷性:执行有限步骤后必然结束,不会无限循环,且每一步耗时可预期。
- 确定性:每一步操作的规则、结果都唯一明确,无歧义、无随机模糊描述。
- 可行性:所有操作都可通过基础运算(加减乘除、逻辑判断等)有限次实现,能落地执行。
- 输入:有0个或多个外部输入(算法处理的原始数据)。
- 输出:至少有1个输出(算法处理后的结果,无输出则算法无意义)。
常见分类
- 基础算法:排序(冒泡、快速、归并排序)、查找(二分、哈希查找)、递归、迭代,是所有复杂算法的基础。
- 图算法:最短路径(Dijkstra、Floyd算法)、最小生成树(Kruskal、Prim算法)、拓扑排序,用于处理网络、路径规划问题(如地图导航)。
- 动态规划与贪心算法:解决最优解问题(如背包问题、最长公共子序列),通过拆分问题、局部最优推导全局最优。
- 机器学习算法:分类(决策树、SVM、逻辑回归)、回归(线性回归)、聚类(K-Means)、深度学习(CNN、Transformer),用于数据预测、模式识别(如图像分类、语音识别)。
- 加密算法:对称加密(AES)、非对称加密(RSA)、哈希算法(MD5、SHA-256),保障数据安全与身份验证。
算法的评价指标:如何判断算法优劣
衡量算法好坏,核心看两个关键指标,兼顾效率与资源占用:
时间复杂度:算法执行的时间成本,用大O符号(O(n))表示,描述随输入规模n增长的时间变化趋势。
空间复杂度:算法执行所需的内存/存储资源,同样用大O符号表示,关注临时变量、数据结构的占用空间。
此外,可读性、可维护性、稳定性(如排序后相同元素顺序不变)也是实际应用中的重要评价维度。
应用场景
算法已渗透到生活与技术的方方面面,是各类系统的核心支撑:
- 日常应用:搜索引擎的排序算法、短视频推荐算法、地图导航的路径规划算法、电商的价格计算与库存调度算法。
- 技术领域:操作系统的进程调度算法、数据库的索引查询算法、人工智能的模型训练与推理算法、区块链的共识算法。
- 科学研究:气象预测的数值模拟算法、基因测序的比对算法、物理化学的仿真计算算法。