当N位整数a > 1时, 一 = 一/2
我认为它是 log(n),因为每次执行 while 循环时,您都会将 a 除以二,但我的 friend 认为它是 2 logn(n)。
最佳答案
很明显,您的算法在 big-Theta(log(a)) 中,其中 a 是您的数
但据我了解你的问题,你想知道渐近运行时间取决于你的数字的位数
这真的很难说,取决于你的数字:
假设你有一个 n 位整数,最高有效位是 1。你必须将它除以 n 次,才能得到一个小于 1 的数。
现在让我们看一个整数,其中只有最低位为 1(因此它等于十进制系统中的数字 1)。在那里你只需要一个部门。
所以我想说,它平均需要 n/2,这使得 big-Theta(n) 其中 n 是你的号码的位数。最坏的情况也在 big-Theta(n) 中,最好的情况在 big-Theta(1)
NOTE: Dividing a number by two in binary system has a similar effect as dividing a number by ten in decimal system
关于algorithm - 以输入大小 N 表示的 big-Theta 运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45068070/