我有三种算法,即A,B,C。以下是输入的大小及其各自的运行时间。
Size of Input A B C
----------------------------
512 70 135 42
1024 134 517 86
2048 262 2053 182
在这三种算法中,一种有O(n),一种有O(nlogn),另一种有O(n ^ 2)......
答案 0 :(得分:1)
可以非常粗略地理解不同的复杂程度,如下所示:
通过这种方式,您可以从提供的少量值中了解解决方案。请注意,输入大小始终加倍。在这种情况下,所用的时间也增加了一倍?什么时候比这更多?什么时候翻两番?
最后,您可以尝试找到线性或二次函数,它们(大致)产生给定输入的结果(即运行时间)。如果你能找到一个线性方程(形式为 y = ax + b )那么它是O(n),如果你需要二次方,那么它就是O(n 2 ),等等。
答案 1 :(得分:0)
实际上,big-O表示法在定义函数在两个特定输入大小之间的增长方式方面很差。有几个问题有O(exp n),但实际上比一些非指数函数运行得好。
省略的常量可能会大到使问题无法工作,即使算法可能具有适度低的复杂性。
我怀疑这是一个作业问题,在这种情况下,查看每个函数如何增长,例如,它是否随输入大小线性增加。