我正在为一项艰难的考试做一些自学(对我而言),我无法掌握使用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,任何资源也会有所帮助。
答案 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
元素,并对每个元素进行一些不变的时间修改。