二进制到十进制转换的时间复杂度是什么?
我认为如果二进制数中有K位,那么TC将是 O(K),但是,由于我们总是倾向于使用二进制数中的N位,所以TC会 O(N)。
我是如何得到这个,因为我认为十进制数包含多少位来表示 N位二进制数。
然后,它是10 ^ k-1 = 2 ^ N-1 => K = N Log2 base10 =>这给出了 TC = O(N)。
有人可以澄清一下吗?
此外,是否有机会减少这种时间复杂度?
答案 0 :(得分:1)
起点。
-1,所以我们添加了1.我们有:
10 ^ k = 2 ^ N现在。
为了从10 ^ k得到K,我们将左右两个放入基数10的对数中。由于对数是你需要放置基数来获得参数的幂,因此基数10的log(10 ^ k)将会产生K.另一方面,N Log2 base10是我们因对数化而达到的值。
答案 1 :(得分:0)
十进制数字可以表示log(10)/ log(2)二进制数字,大约3.22。但是你想要二进制到十进制,所以假设每个十进制数字需要4位。无论如何,您的输出大小为O(N),其中N是您的输入大小。
现在,这对于未说明的算法的时间复杂性几乎没有说明。
对于小N,我们可以只查表O(1),但是当N很大时,例如10 ^ 6?
一个朴素的算法将一次处理一位输入,在输出小数上进行乘法/加法。这是输入上的O(N),每个步骤都花费O(N),因为这是在输出上移位/添加的成本。所以O(N ^ 2)是你的时间复杂度。