给出下面几个C语言程序段的时间复杂度。要求写出计算过程 ,谢谢了,在线等。
给出下面几个C语言程序段的时间复杂度。要求写出计算过程(1)inti=1;while(i<=n)i=i*5;(2)x=n;y=0;//n为整数while(x>=(y+1)...
给出下面几个C语言程序段的时间复杂度。要求写出计算过程
(1) int i=1;
while (i<=n)
i=i*5;
(2) x=n; y=0; //n为整数
while (x>=(y+1)*(y+1))
y++;
(3) for (i=1;i<=n;i++)
if (3*i<=n)
for(j=3*i;j<=n;j++)
{ x=x+1; y=3*x+2;} 展开
(1) int i=1;
while (i<=n)
i=i*5;
(2) x=n; y=0; //n为整数
while (x>=(y+1)*(y+1))
y++;
(3) for (i=1;i<=n;i++)
if (3*i<=n)
for(j=3*i;j<=n;j++)
{ x=x+1; y=3*x+2;} 展开
2个回答
展开全部
1、主要操作是i = i * 5和i<=n,设循环次数为x,则5^x <= n,因此x <= log5(n),其中5是底数,因此时间复杂度为O(log5(n))。
2、主要操作在while循环中,设循环执行次数为x,则x^2<= n,x <= sqrt(n),因此时间复杂度为O(sqrt(n))。
3、主要是看内循环执行的次数,当i=1时,内循环执行n-3次i=2时,内循环执行n-6次,所以总的执行次数是(n-3*1)+(n-3*2)+(n-3*3)+...+(n-3*n/3)。总的项数为n/3,因此总次数为n*(n/3)-3*(1+2+...+n/3)=(n^2 - 3n)/6。因此时间复杂度为O(n^2)
2、主要操作在while循环中,设循环执行次数为x,则x^2<= n,x <= sqrt(n),因此时间复杂度为O(sqrt(n))。
3、主要是看内循环执行的次数,当i=1时,内循环执行n-3次i=2时,内循环执行n-6次,所以总的执行次数是(n-3*1)+(n-3*2)+(n-3*3)+...+(n-3*n/3)。总的项数为n/3,因此总次数为n*(n/3)-3*(1+2+...+n/3)=(n^2 - 3n)/6。因此时间复杂度为O(n^2)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询