2.4算法分析-运行时间计算

Posted tedxiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.4算法分析-运行时间计算相关的知识,希望对你有一定的参考价值。

一般法则

法则1——for循环

一个for循环的运行时间至多是该for循环内部语句的运行时间乘以迭代次数

法则2——嵌套的for循环

从里向外分析循环,一组嵌套循环内部语句的运行时间为该语句的运行时间乘以该组所有的for循环的大小的乘积。

法则3——顺序语句

将各语句的运行时间求和

法则4——if/else语句

不超过判断的运行时间加上,两部分中运行时间长者

 

下方代码表面是递归实际上是一个简单的循环,从而其运行时间为O(N)

1   public static long factorial(int n) {
2         if (n <= 1) {
3             return 1;
4         } else {
5             return n * factorial(n - 1);
6         }
7     }

递归正常使用时,将其转换成一个循环结构是很困难的。

 

 1     public long fib(int n) {
 2         if (n <= 1) {
 3             return 1;
 4         } else {
 5             return fib(n - 1) + fib(n - 2);
 6         }
 7     }
 8 
 9     public long arr(int n) {
10         long[] array = new long[n + 1];
11         if (n <= 1) {
12             return 1;
13         } else {
14             array[0] = 1;
15             array[1] = 1;
16             for (int i = 2; i <= n; i++) {
17                 array[i] = array[i - 1] + array[i - 2];
18             }
19             return array[n];
20         }
21     }

以上例子中同样是计算斐波那契数列第n项

使用数学归纳法易证得 fib(n) = Ω((3/2)n) (n>4) ,fib(n) = O((5/3)n)  , 而arr(n) = O(n),显然fib(n)需要花更多的时间

 

以上是关于2.4算法分析-运行时间计算的主要内容,如果未能解决你的问题,请参考以下文章

复杂度分析(上):如何分析统计算法的执行效率和资源消耗

计算机视觉常用算法讲解

视频二次裁剪时间计算出原片的时间片段算法

算法设计与分析知识点整理

算法设计与分析知识点整理

算法设计与分析知识点整理