早教吧作业答案频道 -->数学-->
求下列程序段的时间复杂度,1.for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x+=delta;2.i=1;j=0;while(i+j<=n)if(i>j)j++;elsei++;
题目详情
求下列程序段的 时间复杂度,
1.
for ( i = 1 ; i < = n ; i++ )
for ( j = 1 ; j < = i ; j++ )
for ( k = 1; k < = j ; k++ )
x+=delta;
2.
i = 1;
j = 0;
while ( i + j < = n )
if ( i > j )
j++;
else
i++;
1.
for ( i = 1 ; i < = n ; i++ )
for ( j = 1 ; j < = i ; j++ )
for ( k = 1; k < = j ; k++ )
x+=delta;
2.
i = 1;
j = 0;
while ( i + j < = n )
if ( i > j )
j++;
else
i++;
▼优质解答
答案和解析
1.
先观察 for ( j = 1 ; j < = i ; j++ )
for ( k = 1; k < = j ; k++ )
可知若i=w,则程序段执行次数为1+2+..+w.
因此定义f(i)=1+2+..+i
那么总的执行次数为
f(1)+f(2)+..+f(n)=1*n+2*(n-1)+3*(n-2)+..+(n-1)*2+n=n^2*(1+n)/2-1*2-2*3-3*4-...-(n-1)*n
不好意思水平有限,只能到这步了,应该是小于n^3的.
2.我们可以发现,每次进while,无论如何i+j会变大一,所以while语句会执行n次
时间复杂度 o(n)
先观察 for ( j = 1 ; j < = i ; j++ )
for ( k = 1; k < = j ; k++ )
可知若i=w,则程序段执行次数为1+2+..+w.
因此定义f(i)=1+2+..+i
那么总的执行次数为
f(1)+f(2)+..+f(n)=1*n+2*(n-1)+3*(n-2)+..+(n-1)*2+n=n^2*(1+n)/2-1*2-2*3-3*4-...-(n-1)*n
不好意思水平有限,只能到这步了,应该是小于n^3的.
2.我们可以发现,每次进while,无论如何i+j会变大一,所以while语句会执行n次
时间复杂度 o(n)
看了 求下列程序段的时间复杂度,1...的网友还看了以下:
一个有关取余数的问题DP中原来的方程应该是fori:=1toqdoforj:=0tondofork 2020-05-14 …
数据结构问题设有三对角矩阵(ai,j)nxn,将其三条对角线上的元素逐行地存于数组B[3n-2]中 2020-05-14 …
在下表中,我们把第i行第j列的数记为ai,j(其中i,j都是不大于5的正整数),对于表中的每个数a 2020-05-14 …
用matlab求最短距离时出现问题,function [D,path,min1,path1]=fl 2020-05-17 …
一个++i的小题目希望得到语法解释intj,i=1;j=++i+(++i);printf("%d\ 2020-06-11 …
算法排序分析的问题代码:forj=2tolength[A]dokey=A[j]insertA[j] 2020-06-12 …
%%计算核矩阵fori=1:m;forj=1:m,K(i,j)=exp(-norm(A(i,:)- 2020-07-23 …
平面上两个向量i和j,满足如下性质:i·i=1,i·j=0,j·j=1.1).是否存在一个不等于i 2020-08-01 …
英语翻译一:A=imread('图像.bmp');I=double(A);[m,n]=size(I) 2020-11-01 …
设n为正整数,利用大o记号将下列程序段的执行时间表示为n的函数(1)i=1""-k=100.whil 2020-11-01 …