2016-09-07 27 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)