在算法复杂度中大O和小o的区别

  • 大O记号(O)

    • 定义:如果存在正常数 CCC 和 n0n_0n0​,使得所有 n≥n0n \geq n_0n≥n0​ 时,f(n)≤C⋅g(n)f(n) \leq C \cdot g(n)f(n)≤C⋅g(n),则我们说 f(n)f(n)f(n) 是 O(g(n))O(g(n))O(g(n))。

    • 含义:大O记号用于描述算法性能的上界,即算法的运行时间或所需空间不会超过 g(n)g(n)g(n) 的某个常数倍。它是一种保证,表明算法在最坏情况下的表现。

    • 举例:如果一个算法的时间复杂度为 O(n2)O(n^2)O(n2),则意味着输入规模为 nnn 时,执行时间不会超过 n2n^2n2 的某个常数倍。

  • 小o记号(o)

    • 定义:如果对于任意的正常数 CCC,存在正常数 n0n_0n0​,使得所有 n≥n0n \geq n_0n≥n0​ 时,f(n)<C⋅g(n)f(n) < C \cdot g(n)f(n)<C⋅g(n),则我们说 f(n)f(n)f(n) 是 o(g(n))o(g(n))o(g(n))

    • 含义:小o记号用于描述一个更严格的上界,即 f(n)f(n)f(n) 的增长率严格小于 g(n)g(n)g(n)。这意味着 f(n)f(n)f(n) 在 nnn 趋向无穷大时与 g(n)g(n)g(n) 相比,增长得更慢,几乎可以忽略不计。

    • 举例:如果一个算法的时间复杂度为 o(n2)o(n^2)o(n2),则表示该算法的执行时间随 nnn 增大,其增长率低于 n2n^2n2 的任何常数倍,随 nnn 趋向无穷大,比 n2n^2n2 增长得慢得多。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值