数据结构:算法时间复杂度和空间复杂度

一、算法:

1、算法定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
2、算法具有五个基本特性:输入、输出、有穷性、确定性、可行性
a.算法具有零个或多个输入,至少有一个或多个输出
b.有穷性:算法在执行有限的步骤之后会自动结束,而不会出现无限循环,并且每一个步骤是在可接受的时间内完成
c.确定性:算法的每一步骤都具有确定的含义,不会出现二义性,也就是说相同的输入只能有唯一的输出结果
d.可行性:算法的每一步都必须是可行的,也就是每一步都可以转换为程序上机执行,并且得到正确的结果

二、函数的渐近增长

1、渐近增长的定义:对于一个函数f(n),输入规模n在没有限制的情况下,只要n超过了一个数值N,这个函数就总会大于另一个函数。那么就称这个函数f(n)是渐近增长的。
那如果我们给定两个函数f(n),g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,则称f(n)的增长渐近快于g(n)
2、对于函数的增长,我们可以忽略加法常数,忽略项数,注意指数,最高次项的指数越大,函数的增长也就越

三、算法时间复杂度

1、f(n):函数
T(n):算法执行时间(算法语句执行次数)
时间复杂度:T(n) = O(f(n))
2、常数阶O(1):单纯的分支结构(即不包含在循环中),时间复杂度都为O(1)
线性阶O(n): 一个循环n次的循环结构,时间复杂度为O(n)
对数阶O(logn):一个循环log₂n次的循环结构,时间复杂度为O(logn)。(不一定非得是2的对数,2代表常数)
平方阶O(n²) 立方阶O(n³) 指数阶O(2^n) nlogn阶O( nlogn)
O(1)<O(logn)<O(n)<O( nlogn)<O(n²) <O(n³)<O(2^n) <O(2!)<O(nⁿ)
3、学会计算时间复杂度

四、算法空间复杂度

1、f(n):关于n所存储空间的函数
算法空间复杂度:S(n) = O(f(n))
2、若算法执行时所需的辅助空间相对于输入数据量而言是个常数,则称此算法为原地工作,空间复杂度为O(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值