基本信息
文件名称:数据结构 课件 第1章 绪论(2算法和算法分析).pptx
文件大小:900.5 KB
总页数:21 页
更新时间:2025-06-06
总字数:约1.6千字
文档摘要

分析算法占用的资源;算法分析的目的是()。

A.找出数据结构的合理性

B.研究算法中输入和输出的关系

C.分析算法的效率以求改进

D.分析算法的易读性和可行性;算法中的基本操作一般是最深层循环内的原操作。

算法执行时间大致=基本操作所需的时间×其运算次数。;算法运行时间=一个简单操作所需的时间×简单操作次数

每条语句执行一次所需要的时间,随机器而异。取决于机器的指令性能,速度以及编译代码的质量。是由及其本身软硬件环境决定的,与算法无关。所以,可以假设执行每条语句的时间均为单位时间,在讨论算法运行时间时不予考虑。所以,算法的运行时间取决于简单操作次数,用T(n)表示,执行简单操作次数越多,其执行时间就相对越多。

为了便于比较不同算法的时间效率,我们仅比较算法简单操作次数的数量级,数量级越大,算法时间复杂度越高。算法的时间复杂度就是用T(n)的数量级来表示,记作O(f(n))。

;intmain()

{

inti,j,n,m=0;

scanf(%d,n);

for(i=0;in;i++)

for(j=0;jn;j++)

m++;

printf(%d,m);

return0;

};这种简化的时间复杂度分析方法得到的结果相同,但分析过程更简单。;/21;下列程序段的时间复杂度是()。;解:该算法中的基本操作是两重循环中最深层的语句count++,由于外层循环和内层循环之间没有交叉,符合乘积关系,先分析外层循环的执行次数为:;voidfun(intn)

{

inti,x=0;

for(i=1;in;i++)

for(j=i+1;j=n,j++)

x++;

};voidfn(intn)

{

inty=0;

while(y*y=n)

y++;

};voidfun1(intn)

{

i=1,k=100;

while(i=n)

{

k=k+1;

i+=2;

}

};intFind(inta[],ints,intt,intx)

{intm=(s+t)/2;

if(s=t)

{if(a[m]==x)

returnm;

elseif(xa[m])

returnFind(a,s,m-1,x);

else

returnFind(a,m+1,t,x);

}

return-1;

};解:分析递归算法的时间复杂度前先要分析该算法的执行次数递归方程。

该算法的执行次数递归方程为:;各种不同算法时间复杂度的比较关系如下:

O(1)O(log2n)O(n)O(nlog2n)O(n2)O(n3)O(2n)O(n!);某算法的时间复杂度为O(n2),表明该???法的()。

A.问题规模是n2 B.执行时间等于n2

C.执行时间与n2成正比 D.问题规模与n2成正比;下面几种算法时间复杂度中,时间复杂度最高的是()。

A.O(nlog2n) B.O(n2)C.O(n) D.O(2n);;算法的空间复杂度是指()。

A.算法中输入数据所占用的存储空间的大小

B.算法本身所占用的存储空间的大小

C.算法中所占用的所有存储空间的大小

D.算法中需要的辅助变量所占用存储空间的大小;某算法的空间复杂度为O(1),则()。

A.该算法执行不需要任何辅助空间

B.该算法执行所需辅助空间大小与问题规模n无关

C.该算法执行不需要任何空间

D.该算法执行所需空间大小与问题规模n无关;分析如下算法的空间复杂度。