2-2-函数调用时间复杂度分析
案例一:
1 | public static void main(String[] args) { |
show方法的时间复杂度为O(1),main方法的时间复杂度是O(n)
案例二:
1 | public static void main(String[] args) { |
在main方法中,有一个for循环,循环体调用了show方法,由于show方法内部也有一个for循环
所以show方法 的时间复杂度为O(n),main方法的时间复杂度为O(n^2)
案例三:
1 | public static void main(String[] args) { |
在show方法中,有一个for循环,所以show方法的时间复杂度为O(n),在main方法中,show(n)这行代码内部执行 的次数为n,第一个for循环内调用了show方法,所以其执行次数为n^2,第二个嵌套for循环内只执行了一行代码,
所以其执行次数为n^2,那么main方法总执行次数为n+n^2+n^2=2n^2+n。
根据大O推导规则,去掉n保留最高阶 项,并去掉最高阶项的常数因子2,所以最终main方法的时间复杂度为O(n^2)
最坏情况
1 | public int search(int num){ |
最好情况: 查找的第一个数字就是期望的数字,那么算法的时间复杂度为O(1)
最坏情况: 查找的最后一个数字,才是期望的数字,那么算法的时间复杂度为O(n)
平均情况: 任何数字查找的平均成本是O(n/2) 最坏情况是一种保证,在应用中,这是一种最基本的保障,即使在最坏情况下,也能够正常提供服务,所以,除非 特别指定, 我们提到的运行时间都指的是最坏情况下的运行时间。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Z.yang!