一、时间复杂度
- 是什么?
是表示执行某个算法所需要的计算工作量 - 用什么表示与官方定义?
渐进时间复杂度(大O表示法):若存在函数 f(n),使得当n趋近于 无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
PS:看的头疼代表你还是个正常人,记住红色字体内容,然后跟着下面例子走就行了。 - 四个通俗易懂的例子
执行次数:T(n)=2n |
执行次数:T(n)=4*log2^n |
执行次数:T(n)=2 |
执行次数:T(n)= 1+2+3+......+ n-1 + n = (1+n)*n/2 = 0.5n^2 + 0.5n |
4.如何推导出时间复杂度?
①.如果运行时间实常数级,用常数1表示
②.只保留时间函数中的最高阶项
③.如果最高阶项存在,则省去最高阶项前面的系数
5.上四个例子的时间复杂度为:
①T(n)=2n 最高阶项为2n,省去系数2,转化的时间复杂度为:T(n) = O(n)
图解:
②T(n)=4*log2^n 最高阶项为4*log2^n,省去系数4,转化的时间复杂度为:T(n) = O(log2^n)
图解:
③T(n)=2 只有常数量级,转化的时间复杂度为:T(n) = O(1)
图解:
④T(n) = 0.5n^2 + 0.5n 最高阶项为0.5n^2,省去系数0.5,转化的时间复杂度为:T(n) = O(n^2)
图解:
总:由上可以得出根据N值的不同,算法的时间复杂度在不同的N值区间内会有区别,所以根据不同的情况设计不同的算法是非常必要的。
版权声明:本博客为记录本人自学感悟,内容大多从网上学习与整理所得,若侵权请告知!