了解运行时间功能

时间:2015-02-13 14:45:17

标签: algorithm analysis

我正在为一项艰难的考试做一些自学(对我而言),我无法掌握使用T(n)函数的算法执行时间的概念。

例如:

i = 1;                 // c1  1

sum = 0;               // c2  1

while (i <= n) {       // c3 n+1

    i = i + 1;         // c4 n

    sum = sum + i;     // c5 n

}

费用计算:

Total Cost = c1 + c2 + (n+1).c3 + n.c4 + n.c5

T(n) = an^2 + bn + c

找到足够的总成本?

请光着我的noobness,任何资源也会有所帮助。

1 个答案:

答案 0 :(得分:2)

查找确切的运行时间通常是无用的,因为它取决于许多因素,包括编译器优化,硬件架构,运行的程序数量,操作系统等等。 \
一个简单的例子:需要多长时间:

for (int i = 0; i < 16; i++) 
   c[i] = a[i] + b[i]'` 

答案是 - 这取决于。例如,许多现代机器允许在单个指令中添加向量,这比迭代和添加要短得多。

由于上述原因,我们很少关心确切的理论时间,我们很少关注 big O notation ,或者替代 - 根据实际性能比较运行某些算法 - 使用<强> statistical tests 即可。

Big O表示法下代码的复杂性为O(n) - 因为它涉及迭代n元素,并对每个元素进行一些不变的时间修改。