算法时间、空间复杂度案例

1. 时间频度

一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。

2. 算法的时间复杂度
  • 在时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。
  • 一般情况下,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)), 称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度,O便是复杂度的符号。
  • 在计算平均复杂度的时候,我们其实做了一个假设:所有情况出现的概率都是一样的。
  • 常见的算法时间复杂度由小到大依次为:
    常数阶O(1) < 对数阶O(logN) < 线性阶O(n) < 线性对数阶O(nlogN) < 平方阶O(n²) < 立方阶O(n³) < K次方阶O(n^k) < 指数阶(2^n)
    (从左至右依次时间复杂度越来越大,执行的效率越来越低)
    在这里插入图片描述代码详见:https://blog.youkuaiyun.com/xy707707/article/details/80428443

案例:

  1. 如果一个网站要对它的用户发放优惠券,那我们就需要先找到这些用户。我们用一个长度为 n 的数组代表某个网站的用户列表。我们假设第一个注册用户 ID 是 1,第二个注册用户的 ID 是 2,以此类推,最近刚刚注册的用户 ID 为 n。
  2. 如果网站的发放策略是倾向于奖励新用户,那么被查找的用户 ID 有很大的概率会非常接近 n,因此平均复杂度就会非常接近 O(n)。相反,如果网站的发放策略是倾向于奖励老用户,那么搜索的用户 ID 有很大的概率是非常接近 1 的,因此平均复杂度会非常接近 O(1)。

(由此可见,不均匀的概率分布,最终会影响平均复杂度的加权平均计算。)

3. 算法的空间复杂度

是对一个算法在运行过程中临时占用存储空间大小的量度。S(n)定义为该算法所耗费的存储空间,与时间复杂度类似,渐近空间复杂度也常常简称为空间复杂度。

  • 当算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);
  • 当算法的空间复杂度与以2为底的n的对数成正比时,可表示为0(10g2n);
  • 当算法的空I司复杂度与n成线性比例关系时,可表示为0(n)
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值