数据结构——时间/空间复杂度

1、算法是指令的有穷序列。

5个特征:有穷性,确定性,可行性,输入,输出。
4个要求:正确性,可读性,健壮性,效率与低存储量。
算法评价:事后统计方法,事前分析估算(时间/空间复杂度)。

2、渐进时间复杂度

T(n)=O(f(n))

渐进时间复杂度衡量的是一个算法基本操作执行次数的数量级,而不是单纯地比较程序运行时间的长短。其真实意义应该是:是如果问题规模(n)趋向于无穷大,比较算法执行时间长短。因此,计算T(n),f(n)的系数是不起作用的,也不必比较单级基本操作执行次数的多少。

因此,渐进时间复杂度是一个理想运行时间的衡量,而不是一个具体运行时间的衡量。O的具体意义是:是用于描述函数渐进行为的数学符号。也就是说,O其实是使用另外一个函数来描述本来函数的渐进上界,这样可以简化问题。其意义类似于数学中的等价无穷小的概念。

因此,有定理:如果f(n)是一个多项式,最高次项的指数为m,那么其渐进时间复杂度是T(n)=O(n^m)。

常见渐进时间复杂度的比较:O(log2 n)<O(n)<O(nlog2 n)<O(n^2)<O(n^3)<O(2^n)<O(n!)

3、渐进空间复杂度

渐进空间复杂度不是衡量所有程序占用空间的大小,而是程序临时占用存储空间大小的度量。也就是说,计算的一般只有算法本身所占的存储空间,算法输入输出所占的空间以及算法临时占用的空间。

有的算法临时占用的空间是不随问题规模的大小而改变的,我们称其为“就地”进行的算法,是节省存储的算法。而有的算法所占用的空间随问题规模(n)的增大而增大,就需要使用O(f(n))的方式来衡量,才称为渐进空间复杂度,很多递归算法都属于这种算法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值