亲爱的,
当我阅读有关某些算法的信息时,偶尔会遇到算法性能信息,例如:O(1),O(n),O(n ^ 2)等。
我是否可以获得有关如何翻译和理解此性能数据的说明?什么样的O(n)变体可用,它们在实践中意味着什么?
谢谢。
答案 0 :(得分:7)
您需要解释big-O表示法。
它衡量算法的复杂程度。由于N倾向于无穷大,所以时间量的方向将是。
您需要注意的一件事是O(N)乘以常数仍然是O(N)。没有O(2N)这样的东西。
O(1)表示某事需要一段时间,即所花费的时间与您正在处理的数据量无关。
O(N)表示它与您正在处理的数据量成正比,因此如果处理一百万条记录需要一分钟,则处理200万条记录需要2分钟。
O(N ^ 2)表示它与N的平方成正比.1000记录需要一分钟,2000需要4分钟,4000需要16分钟等。
您还可以拥有O(log N)和O(N log N)。您可以使用任何基数进行日志,但通常在日志库2中进行测量。因此,一百万条记录将测量为20,因为2 ^ 20接近一百万,而200万条记录将为21.对于N log N,一千条记录将相当于10,000,因为1000的日志大约是10. 2,000条记录将是22,000,因为2000的日志大约是11。
答案 1 :(得分:1)