我想了解这个代码,它反转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