如何计算我的 C 函数的时间复杂度
How to calculate the Time complexity of my C function
我写了一个函数来计算一个十进制数在二进制中的个数。如果输入是 3 那么它的二进制将是 0011 并且它应该将输出打印为两个。因为二进制中有两个1 number.How 我可以计算这个函数的时间复杂度吗?
#include<stdio.h>
void main()
{
void numberof_1(int n)
{
int i,count=0;
if ((n & 1)== 1)
count=count+1;
printf("%d",count);
for(i=0;i<32;i++)
{
n= n >> 1;
if ((n & 1)==1)
{
count=count+1;
}
}
printf("\nthe number of ones =%d\n",count);
}
numberof_1(10);
}
从纯算法的角度来说,numberof_1()
的时间复杂度是O(log(n))
(其中n
是输入的数字)。
该数字以二进制表示,因此有 log_2(n)
位表示它。您的算法正在迭代所有这些位。
但是,请注意,要真正实现 O(logn)
时间复杂度,您应该在 n==0
时添加条件 break
(以避免对已经为 0 的数字进行冗余迭代) .
从技术角度来看,整数由常数位数表示,如果您确实将此大小称为常数 - 算法 运行 时间是 O(1)
,因为迭代次数有限,并且对所需的迭代次数有硬性限制。
我写了一个函数来计算一个十进制数在二进制中的个数。如果输入是 3 那么它的二进制将是 0011 并且它应该将输出打印为两个。因为二进制中有两个1 number.How 我可以计算这个函数的时间复杂度吗?
#include<stdio.h>
void main()
{
void numberof_1(int n)
{
int i,count=0;
if ((n & 1)== 1)
count=count+1;
printf("%d",count);
for(i=0;i<32;i++)
{
n= n >> 1;
if ((n & 1)==1)
{
count=count+1;
}
}
printf("\nthe number of ones =%d\n",count);
}
numberof_1(10);
}
从纯算法的角度来说,numberof_1()
的时间复杂度是O(log(n))
(其中n
是输入的数字)。
该数字以二进制表示,因此有 log_2(n)
位表示它。您的算法正在迭代所有这些位。
但是,请注意,要真正实现 O(logn)
时间复杂度,您应该在 n==0
时添加条件 break
(以避免对已经为 0 的数字进行冗余迭代) .
从技术角度来看,整数由常数位数表示,如果您确实将此大小称为常数 - 算法 运行 时间是 O(1)
,因为迭代次数有限,并且对所需的迭代次数有硬性限制。