algorithm - 以输入大小 N 表示的 big-Theta 运行时间

标签 algorithm runtime big-o

当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/

相关文章:

mysql - 如何在运行时指定输入

java - 如何在 O(n) 的排序数组中找到两个总和为给定数字的数字?

performance - 寻找最长的非负子数组

java - 为什么-127>>1的二进制表示是11000000?

C# - Windows 窗体本地化(语言)在运行时更改 - ListView 列标题不会更改语言

data-structures - 为什么散列和 BST 的复杂性不考虑处理 key 字节所需的时间?

algorithm - 证明 n! = O(n^n)

algorithm - 将有序索引分配给二叉树

algorithm - 多米诺骨牌匹配算法

java - 在运行时更改 Maven 插件配置