我想知道,我如何估计我的程序在我的机器上执行的时间(例如2.5 Ghz机器),如果我估计它的最坏情况时间复杂? 例如: - 如果我有一个O(n ^ 2)的程序,在最坏的情况下,并且n <100000,我怎么能在编写实际的程序/程序之前知道/估计,时间它将在几秒钟内执行?
知道程序实际执行情况不是很好吗,它也会节省编写代码,最终效率低下! 非常感谢。
答案 0 :(得分:3)
由于大O复杂性忽略了线性系数和较小的项,因此不可能仅仅考虑其复杂性来估计算法的性能。
事实上,对于任何特定的N,您无法预测两种给定算法中的哪一种会更快地执行。
例如,O(N)并不总是比O(N * N)快,因为采用100000000 * n步的算法是O(N)比算法慢,而不是采用N * N步为许多小值N.
这些线性系数和渐近较小的项在不同平台之间变化,甚至在相同等价类的算法中(就大O度量而言)。 3
您尝试使用大写符号的问题不是它旨在解决的问题。
答案 1 :(得分:0)
您可能希望查看Worst Case Execution Time
(WCET),而不是处理complecity。这个研究领域很可能与您所寻找的一致。
答案 2 :(得分:-1)
在你最内层循环的迭代中花费的时间乘以N ^ 2,并且你有一个大概估计。