有一個循環執行蠻力算法來計算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