数据结构--绪论(三)
算法和算法分析#
算法特性#
算法(Algorithm)是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作
- 有穷性:输入值合法的情况下,一个算法总是执行有穷步骤后结束,每一步都可以在有穷时间内完成
- 确定性:算法中的每条指令必须有确切含义,不能具有二义性、
- 可行性:算法中描述的操作均可通过有限次执行已经实现的基本运算来实现
- 有输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合,该集合可以使用输入语句由外部提供
- 有输出:一个算法有一个或多个输出,这些输出于输入有着某些特定的关系,是算法对输入进行特定操作后得到的结果
算法设计的要求#
- 正确性(Correctness):要求算法满足当前具体问题的需求,算法的执行结果能够满足预定的功能和性能要求
- 分为4个层次
- 算法没有语法错误
- 算法对于随意的几组输入数据能够得出复合要求的结果
- 算法对于精心设计的典型、苛刻的几组合法输入能够得出复合要求的结果
- 算法对于所有合法的输入数据都能得出复合要求的结果
- 可读性(Readability):算法应当是可读的
- 健壮性(Robustness):算法应具有容错性或例外处理能力
- 效率与存储量需求:效率指的是算法执行所需的使劲按,存储量需求指算法执行过程中所需要的最大存储空间
算法的性能分析与度量#
时间复杂度(Time Complexity)是指程序运行从开始到结束所需要的时间#
- T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度(symptotic Time Complexity)
#
空间复杂度(Space Complexity)是指程序运行从开始到结束所需要的存储空间的度量#
- S(n)=O(f(n)),其中n为问题的规模,f(n)为所需存储空间关于问题规模n的函数表达式
- 固定部分,存储空间用来存储程序代码、常量、简单变量、定长成分的结构变量,这部分存储空间和所处理的数据大小和个数无关
- 可变部分,这部分空间大小与算法在某次执行中处理的特定数据的大小和规模有关
- 若额外空间相对于输入数据量来说是常数,称此算法为原地工作
- 算法的空间复杂度主要考虑算法在运行过程中临时占用的存储空间的大小
作者:BigBender
出处:https://www.cnblogs.com/BigBender/p/12166850.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!