我理解渐近符号的原理,例如,当某事物是O(1)或O(n 2 )时,我得到了它的含义。但O(log n)是什么意思?或者O(n log n)例如?
答案 0 :(得分:4)
日志是“logarithm”的缩写:http://en.wikipedia.org/wiki/Logarithm
对数告诉我们例如,表示一个数字需要多少位数,或者当你向其中添加N个元素时,平衡树有多少个等级。
答案 1 :(得分:2)
检查:en.wikipedia.org/wiki/Big_O_notation
记住日志的增长速度比指数函数慢。所以,如果你的算法是n ^ 2而另一个算法是相同的,那么它具有对数函数,最后一个会更强效率(总的来说,并不总是!)。
要评估函数(或算法)的复杂度,您必须主要考虑时间和空间的执行。您可以使用其他参数评估函数或算法,但最初,这两个参数都可以。
修改强>: http://en.wikibooks.org/wiki/Data_Structures/Asymptotic_Notation
另外,请检查排序算法。将提供有关复杂性的深刻见解。
答案 2 :(得分:1)
log是一个数学函数。它是取幂的倒数 - 2 ^ n的log(基数2)是n。在实践中,对于任何正c(包括分数c,例如1/2(其为平方根)),它优于n ^ c。查看维基百科了解更多信息。