数据结构——1-2算法

本文详细讲解了算法的本质,包括数据结构与算法的关系,以及算法的特性(有穷性、确定性、可行性)。重点讨论了时间复杂度和空间复杂度的定义,并通过实例说明算法效率评估。深入浅出地阐述了算法的正确性、可读性和健壮性。
摘要由CSDN通过智能技术生成

算法

什么是算法?

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

算法的特性

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

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

图解(算法)

image-20220502180425354

算法效率的度量

时间复杂度

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

空间复杂度

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

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

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

[外链图片转存中…(img-8Onx6Kqt-1652544380810)]

image-20220504155915352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值