java - Do Nlog(logN), NlogN, Nlog(N^2) have equivalent running times? -
i think nlogn , nlog(n^2) equivalent, , nlog(logn) has better rt nlogn , nlog(n^2). can confirm?
no. big o notation has nothing actual run time. o(n) can run shorter o(1) given n
value depending on actual implementation.
big o notation comparing how algorithms scale. meaning n
increases, how change relative each other.
so, example:
function add100(x) { (i = 0; < 100; i++) { x++; } return x; } function twice(x) { tmp = x; (i = 0; < tmp; i++) { x++; } return x; }
i know these functions can reduced x+100
, 2 * x
respectively, demonstration purposes simple , show want them to. (and compilers may optimize them, there may not difference depending on environment).
now, add100(x)
has algorithmic complexity of o(1)
. , double(x)
has complexity of o(n)
. however, values of x
< 100, twice(x)
faster add100(x)
. arbitrary input won't. won't scale well, is faster range of input. now, trivial implementation, , not algorithms have faster input range, demonstrate o()
notation has no effect on actual runtime...
however, in particular case, it's simple logarithm math. log(m^n) == n * log(m)
, therefore n log(n) == log(n^n)
. n log(n) != n log(n^2)
... however, since constants dropped in big o notation, n log (n^2)
transform 2n log (n)
transforms n log (n)
... n log(n) == n log(n^2)
for purposes of big o notation...
Comments
Post a Comment