实际计算时并不需要那么精确,只需要计算出大概的执行次数,那么这里使用大O的渐进表示法,推导的大O阶方法:
1.用常数1来表示所有的常数。
2.在修改后的运行次数函数中,只保留大O阶项。
3.如果最高阶项存在且不是1,则去除与这个项目相乘的常数,得到的结果就是大O阶。
使用大O阶的表示法后,fun的时间复杂度为O(n^2);
但也有一些算法存在最坏最好的情况:
最坏情况:任意输入规模的最大运行次数(上界)
平均情况:任意输入规模的期望运行次数
最好情况:任意输入规模的最小运行次数(下界)
例如:在一个元素为n的数组中找某个数x
最快次数:1
最坏次数:n
平均次数:n/2
在实际情况中,我们一般用最坏情况作为算法的效率,所以数组中搜索数据的时间复杂度为O(n)。
实例1基本操作执行了2N+10次,通过推导大O阶方法知道,时间复杂度为 O(N)
实例2基本操作执行了M+N次,有两个未知数M和N,时间复杂度为 O(N+M)
实例3基本操作执行了100次,通过推导大O阶方法,时间复杂度为 O(1)
实例4基本操作执行最好N次,最坏执行了(N*(N-1))/2次,通过推导大O阶方法+时间复杂度一般看最坏,
时间复杂度为 O(N^2)
实例5基本操作执行最好1次,最坏O(logN)次,时间复杂度为 O(logN) ps:logN在算法分析中表示是底数
为2,对数为N。有些地方会写成lgN。
6.实例6递归基本操作执行了2N次,所以时间复杂度为O(2N)。

参考:https://blog.51cto.com/u_14632675/2547567

分类: web

标签: