我正在研究自己的算法。我使用Introduction to Algorithms (CLRS)并发现它很有趣。为了解决这个问题,我在这个问题上遇到了一些困难(比较运行时间) 我知道规则,但我找到了答案,但我需要有人向我详细解释。正如您在下面看到的log n运行时的答案。 我试着在我的计算器中记录这个数字,但它与下面的数字不符。例如,当我在我的计算器中使用log(2 ^ 1000000)时,它给了我一个全新的答案而不是这个9.9e301029。
感谢您提供的任何帮助
lg n =Tμs=> 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 :(得分:0)
二进制搜索可能具有log2(n)μs的运行时间(常数因子可能要小得多)。二进制搜索很快。如果你有一台功能强大的计算机,你可能会将640亿字节的数组放入内存中,而二进制搜索则需要36微秒。是的,您无法构建足够大的计算机内存,以便使用宇宙中的所有硅树脂进行二进制搜索需要一毫秒的数组。
答案 1 :(得分:0)
2^1000000 = 9.9e301029
log(2^1000000) = 1000000
(假设基数为2)
1000000µs = 1s
现在清楚?
大多数计算器默认为记录基数10,因此您需要使用以下公式转换为log base 2:
log_b(x) = log_a(x) / log_a(b)