有一个循环执行蛮力算法来计算5 * 3而不使用算术运算符。为什么这个循环需要O(2^n)时间复杂度?
我只需要添加五次3次,这样就需要O(3),如果输入是x * y,那么就是O(y)。 但是,在一本书中,它表示需要O(2^n),其中n是输入中的位数。我不明白为什么使用O(2^n)来表示它O(y)。它是更好的方式来显示时间复杂性?你能解释我吗?
我不要求其他算法来计算这个。
int result = 0
for(int i=0; i<3; i++){
result += 5
}
运行时是一个常量(O(1)),因为此循环的运行时不依赖于任何外部参数。这真的是这本书所说的吗?你能否引用特定的措词以及它所指的是什么? – templatetypedef
你在谈论“输入中的位数”我高度怀疑你正在舍弃一些关于本书所说的相关信息。 – bolov
在一本书中,它表示“要形成5x3,我们将从0开始并重复添加5.时间复杂度非常高,与O(2^n)一样多,其中n是输入中的位数”。但是3是0011,这是什么意思n是位数?为了表示3,它只需要2位。 O(2^2)= O(4)。为什么作者使用O(2^n),其中n是输入中的位数,而不是O(n)? – devDNA