时间复杂度O(n)T(n)的明确数学定义(极其易懂)

时间复杂度的明确数学定义(极其易懂)

国内外很多人把O()当运算符和把 Θ \Theta Θ与时间复杂度的定义弄乱了,对学习者造成了极大的困扰。

1. O()表示法表示的是取多项式的高阶或者同阶或者等阶来比较:

请注意pay a attention,这个O()叫做大O表示法,它不是一个运算符,也就是说不是一个函数比如O(f(n))就返回一个值,这是一个一整套的说法,必须配上等号和另一项才有意义。
(个人很不喜欢这个表示法,严重混淆了算符和等于号)

比如
1.单独写出来 O ( n 3 ) O(n^3) O(n3)是多少,这个是没有意义的,因为它的定义不是一个算符。所以我们一般说的那个复杂度,也是一个简称
2.T(n) = O(f(n)) 表示的是f(n)的阶数 ≥ \ge T(n)
严格的数学定义如下(我表示很像$\sigma $ ~ $ \epsilon$语言,不想看第二眼)

2. 又因为高阶常常没意义,所以O()常常与 Θ ( ) \Theta() Θ()混用

这个很多hr都混用的,到时候问斐波那契递归复杂度就麻烦了
其中 Θ \Theta Θ()表示严格的同阶
比如
Θ ( 3 n 2 + 2 ) = n 2 \Theta(3n^2+2) = n^2 Θ(3n2+2)=n2
在这里插入图片描述

3.T(n)的含义

T(n)就是执行操作次数,n是某个规模,这个没什么好说的

5.f(n)与时间复杂度的定义式

复杂度定义式:T(n) = O(f(n))
其中这个f(n)表示的就是一个估计的执行操作数,这也是和T(n)一样的函数
所以,T(n) = O(f(n))的意思就是估计操作数和实际操作数高阶或者同阶。。。
整个概念非常浅显易懂,实际上
当然,上面的定义式又定义了什么呢,上面的式子描述了一个关系,满足上面关系的估计函数f(n)就叫做复杂度。
也就是求f(n),这个f(n)比T(n)高阶或者同阶
有时候故意要求同阶的答案,其实那个是T(n) = Θ ( f ( n ) ) \Theta(f(n)) Θ(f(n))

后记

为什么要写这个呢,当然是看题看傻了,写作业去了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值