T(n)f(n) g(n)没有别的特殊含义,都是定义了一个function,为了区分而进行不同的命名
T(n)T 代表了一个函数
T(n)=100n
f(n)=5n^2
当n接近于无穷大时
当T(n)/f(n)的极限值是≠0的常数(如固定不变的数如π)
T(n)=O(f(n)),T(n)也就是时间复杂度,写做O(f(n))。
在不考虑函数的情况下
T(n)=A
f(n)=B
也就是说当A/b≠0,A就是时间复杂度
时间复杂度大O的推导
1.如果n是常数(1234567890。。。)就用常数1来表示
2.只保留最高阶项
3.如果最高阶项不是1,则去除与最高项相乘的常数,如T(n) = 0.5n^2 + 0.5n,结果就是T(n) = O(n^2)
常用的时间复杂度所耗费的时间从小到大依次是
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
考虑算法在输入规模趋向无穷时的效率分析就是渐近分析。
渐近分析就是:忽略具体机器、编程或编译器的影响,只观察在输入尺寸n取趋向无穷时算法效率的表现.
简单来说就是忽略外部因素,只考虑n
关于log涉及到高中数学的知识,我做了一张图,大家可以简单看下