算法

算法

什么是算法?

程序=数据结构+算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作
可理解为要做菜,数据结构为将菜名描述给计算机,而算法是指做菜的每个步骤
image-20220502174701038

算法的特性

有穷性:一个算法必须在执行有穷步后结束,且每一步都在有穷时间内完成。算法是有穷的(有限的步骤解决特定的问题,死循环也不属于算法),但是程序是无穷的
确定性:算法的每条命令必须有确切的含义,对于相同的输入要有相同的输出(确定一种算法,输入后必须有相同的输出,不能产生歧义,指多个输出结果,必须确定唯一规则使之有相同输出)
可行性:算法的描述操作都可以通过已经实现的基本运算执行有限次来实现(算法必须能在计算机内实现)
输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

算法的特质,所追求的目标
正确性:能够正确解决问题
可读性:算法应该具有良好的可读性,帮助人们理解
健壮性:输入非法数据时,能适当的做出反应处理,不会因此输出错误结果
高效率和低存贮量需求:时间复杂度和空间复杂度

图解(算法)

image-20220502180425354

算法效率的度量

时间复杂度

时间开销与问题规模n之间的关系。
image-20220505234416368

空间复杂度

空间开销(内存开销)与问题规模n之间的关系。

当一段高级语言编译为机器语言后,机器语言存入内存中,首先程序段代码占据部分内存,其大小固定,同时还有数据段代码,如需要输入的数据,也占据部分内存
总体可理解为无论问题的规模该如何变化,算法运行所需的内存空间都是固定常量
算法原地工作--算法所需内存空间为常量

计算空间复杂度时,只需关注存储空间大小与问题规模的相关变量,空间复杂度=递归调用的深度
image-20220504133748642

image-20220504155915352

posted @   卓亦苇  阅读(206)  评论(0编辑  收藏  举报
编辑推荐:
· .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技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示