算法
算法
什么是算法?
程序=数据结构+算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作
可理解为要做菜,数据结构为将菜名描述给计算机,而算法是指做菜的每个步骤
算法的特性
有穷性:一个算法必须在执行有穷步后结束,且每一步都在有穷时间内完成。算法是有穷的(有限的步骤解决特定的问题,死循环也不属于算法),但是程序是无穷的
确定性:算法的每条命令必须有确切的含义,对于相同的输入要有相同的输出(确定一种算法,输入后必须有相同的输出,不能产生歧义,指多个输出结果,必须确定唯一规则使之有相同输出)
可行性:算法的描述操作都可以通过已经实现的基本运算执行有限次来实现(算法必须能在计算机内实现)
输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。
算法的特质,所追求的目标
正确性:能够正确解决问题
可读性:算法应该具有良好的可读性,帮助人们理解
健壮性:输入非法数据时,能适当的做出反应处理,不会因此输出错误结果
高效率和低存贮量需求:时间复杂度和空间复杂度
图解(算法)
算法效率的度量
时间复杂度
时间开销与问题规模n之间的关系。
空间复杂度
空间开销(内存开销)与问题规模n之间的关系。
当一段高级语言编译为机器语言后,机器语言存入内存中,首先程序段代码占据部分内存,其大小固定,同时还有数据段代码,如需要输入的数据,也占据部分内存
总体可理解为无论问题的规模该如何变化,算法运行所需的内存空间都是固定常量
算法原地工作--算法所需内存空间为常量
计算空间复杂度时,只需关注存储空间大小与问题规模的相关变量,空间复杂度=递归调用的深度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类