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