我想了解這個代碼,它反轉O(n)時間的位。我瞭解時間複雜性,但我無法理解此代碼背後的邏輯。Java中的反向位 - O(n)
public static long reverse(long a) {
long result = 0;
int i = 31;
while(a > 0){
result += (a % 2) * Math.pow(2, i);
i--;
a = a/2;
}
return result;
}
爲了簡單起見,例如,如果我帶12(1100),只有4位(組I = 3),我的輸出將是3(0011)。我明白了,我也能夠得出答案。
但有人能解釋這個代碼背後的邏輯嗎?謝謝!
奇怪調用這個O(log n)的,因爲我寧願稱之爲位的數量,我,問題大小,然後它是O(我)。 – Harald
@Harald我認爲他指的是運行時複雜性。 – 11thdimension
@Harald你是對的,位數是輸入大小,這使得它'O(n)' – 11thdimension