2016-09-07 28 views
0

我正在学习算法。我使用Introduction to Algorithms (CLRS),并找到它的乐趣。为了解决问题,我在这个问题上遇到了一些困难(比较运行时间)。
我知道规则,我找到了答案,但我需要有人向我详细解释。正如你在下面看到的log n运行时间的答案。 我试图在我的计算器中记录该号码,但它与下面的不匹配。例如,当我在我的计算器中使用log(2^1000000)时,它给了我一个全新的答案,而不是这个9.9e301029。运行时间比较

我将不胜感激你提供任何帮助

LG和n = t微秒=> N = 2^Tμs的

lg n = 1 second => n = 2^1000000 = 9.9e301029 
lg n = 1 minute => n = 2^60000000 = 5.5e18061799 
lg n = 1 hour => n = 2^3600000000 
lg n = 1 day  => n = 2^86400000000 
lg n = 1 month => n = 2^2592000000000 
lg n = 1 year => n = 2^31536000000000 
lg n = 1 century => n = 2^3153600000000000 

回答

0

二进制搜索可能的log 2(N)μs的运行时间(恒因素可能要小很多)。二进制搜索很快。如果你有一台功能强大的计算机,你可能会将64亿个字节的数组放入内存,而二进制搜索则需要36微秒。是的,你无法建立足够大的计算机内存来容纳一个数组,其中二进制搜索需要毫秒使用宇宙中的所有有机硅。

0

2^1000000 = 9.9e301029

log(2^1000000) = 1000000(假定基座2)

1000000µs = 1s

清除现在?

大多数计算器默认登录基地10,所以你需要转换使用下面的公式来登录基地2:

log_b(x) = log_a(x)/log_a(b)