1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 如何预估一个算法所编程序的运行时间? 很简单,先分别计算程序中每条语句的执行次数,然后用总的执行次数间接表示程序的运行时间。
示例一、以一段简单的C语言程序为例,预估出此段程序的运行时间:
for(inti= 0; i<n; i++)// 从 0到 n, 执行 n+1次 { a++; // 从 0 到 n-1, 执行 n 次 }
整段代码中所有语句共执行了(n+1)+n次,即2n+1次。 数据结构中,每条语句的执行次数称为该语句的频度。整段代码的总执行次数,即整段代码的频度。
示例二、 for(int i=0;i<n;i++) //n+1 { for(int j=0;j<m;j++) //n*(m+1) { num++; //n*m } } 说明 -此段程序的频度为: (n+1)+n*(m+1)+n*m,即2*n*m+2n+1。
-不同程序的运行时间,更多场景中比较的是在最坏条件下程序的运行时间。 以上面这段程序为例,最坏条件即当n、m都为无限大时的运行时间。
-当n、m都无限大时,可以认为n=m,2*n*m+2n+1可以简化为2*n²+2*n+1, 这就是此段程序在最坏情况下的运行时间,也就是此段程序的频度。
|