有没有更快的算法来找到log(n)的近似值以及那将是什么时间复杂度?

时间:2014-04-06 13:20:19

标签: algorithm logarithm

是否有更快的算法来查找log(n)的近似值以及该时间复杂度是什么?

我只想要log(n)的近似整数值,并且java中的内置函数log(n)给出了double的近似精度,这对我来说是无用的,需要花费很多时间。因为log和multiplication是我程序中的主要功能之一,但是log会使我的程序太慢。

这里有一些基准

  

乘以:466毫秒

     

对数采用:3245毫秒

它是乘法的大约10倍。

(注意: - 我使用基准测试来表明与我的程序的其他主要功能相比花费了太多时间,我知道不可能比较两种不同类型的功能)

所以我想知道有没有更快的算法来找到log(n)的近似值,那将是什么时间复杂度?

(注意: - 算法适用于任何基础的log())

1 个答案:

答案 0 :(得分:1)

我不知道它是否真的会更快,但假设你有一个x整数,并且你希望它的基数为k

log_k(x) = log_2(x)/log_2(k)

请注意,对于任何ifloor(log_2(i))是最重要的无零位的'索引'