数据结构第01次作业.docx
《数据结构第01次作业.docx》由会员分享,可在线阅读,更多相关《数据结构第01次作业.docx(7页珍藏版)》请在冰点文库上搜索。
数据结构第01次作业
《数据结构(A)》课程作业
《数据结构(A)》第01次作业
作业题目:
1.1使用某种软件工具绘制教材上图1.7中函数在标准坐标系第1象限的图像。
具体要求如下:
(1)说明使用的软件工具名称与版本;
(2)每个函数选取20个自变量,并说明你选取的缘由;
(3)说明你计算每个函数的函数值的方式;
(4)叙述函数图像绘制过程;
(5)在最终给出的图像之中仅仅保留标准坐标系第1象限的图像,你是如何做到的?
1.5试画出与下列程序段等价的框图。
(1)product=1;i=1;while(i<=n){product*=i;i++;}
(2)i=0;do{i++;}while(i!
=n)&&(a[i]!
=x));(3)Switch{casexz=y-x;break;casex==y:
z=abs(x*y);break;default:
z=(x-y)/abs(x)*abs(y);}
1.8设n为正整数,试确定下列程序段中前置以记号@的语句的频度
(1)i=1;k=0;while(i<=n-1){@k+=10*i;i++;}
(2)i=1;k=0;do{@k+=10*i;i++;}while(i<=n-1);
(3)i=1;k=0;while(i<=n-1){i++;@k+=10*i;}(4)k=0;for(i=1;i<=n;i++){for(j=i;j<=n;j++)@k++;}(5)for(i=1;i<=n;i++){for(j=1;j<=i;j++){for(k=1;k<=j;k++)@x+=delta;}}(6)i=1;j=0;while(i+j<=n){@if(i>j)j++;elsei++;}(7)x=n;y=0;//n不小于1while(x>=(y+1)*(y+1)){@y++;}(8)x=91;y=100;while(y>0){@if(x>100){x-=10;y--;}elsex++;}1.10按增长率由小至大的顺序排列下列各函数:
2100,(3/2)n,(2/3)n,(4/3)n,nn,n3/2,n2/3,
n!
n,log2n,
n/logn2,log22n,log2(log2n),nlog2n,nlog2n
1.12设有以下三个函数:
f(n)=21n4+n2+1000,g(n)=15n4+500n3,h(n)=5000n3.5+nlogn请判断以下断言正确与否:
(1)f(n)是O(g(n))
(2)h(n)是O(f(n))
(3)g(n)是O(h(n))
(4)h(n)是O(n3.5))
(5)h(n)是O(nlogn)
作业解答:
第1.1题解答:
(1)说明使用的软件工具名称与版本;
MATLAB2017a;
(2)每个函数选取20个自变量,并说明你选取的缘由;
Y=2n2自变量为0-12的二十等分为自变量,因为函数增长速度较快,自变量较小;
Y=n3/2自变量为0-18的二十等分为自变量,理由同上;
另外几个函数都是0-25的二十等分为自变量,因为函数的增长速度较缓慢,自变量范围略大可以更清新的看出函数的变化趋势。
自变量取值通过Matlab2017a中linspace()函数或x=a:
b:
c(取由a到c间隔为b的数组作为向量)实现。
(3)说明你计算每个函数的函数值的方式;
通过在Matlab写出相应函数计算式来计算。
(4)叙述函数图像绘制过程;
利用Matlab的plot(x,y)函数绘图;
每次绘图用holdon函数固定已画图形再绘制下一条函数曲线。
最后为函数图形添加标注和题目;
(5)在最终给出的图像之中仅仅保留标准坐标系第1象限的图像,你是如何做到的?
利用Matlab中axis()函数将函数x,y的范围分别固定在第一象限代码如下:
axis([0,25,0,400]);
(6)图像源码与图像解释:
图形标记部分是直接对图形操作,无代码。
为使图形更光滑,在原有二十个自变量基础上改为每0.2长度取一个点:
图像源码如下:
x=0:
1:
20;
>>y=2.^x;
>>plot(x,y);
>>x=0:
0.2:
12;
>>y=2.^x;
>>plot(x,y);//绘制第一个图像
>>holdon;
>>x=0:
0.2:
18;
>>y=(x.^3)/2;
>>plot(x,y);//绘制第二个图像
>>x=0:
0.2:
25;
>>y=5*(x.^2);
>>holdon
>>plot(x,y);//绘制第三个图像
>>x=0:
0.2:
25;
>>y=100*x;
>>holdon;
>>plot(x,y);//绘制第四个图像
>>holdon;
>>y=200*(log2(x));
>>plot(x,y);
>>holdon;//绘制第五个图像
>>axis([0,25,0,4000]);
>>title('常见函数的增长率');
第1.5题解答:
(1)product=1;i=1;while(i<=n){product*=i;i++;}
(2)i=0;do{i++;}while(i!
=n)&&(a[i]!
=x));
(3)Switch{casexz=y-x;break;casex==y:
z=abs(x*y);break;default:
z=(x-y)/abs(x)*abs(y);}
第1.8题解答:
(1)对
(2)错
(3)错
(4)对
(5)错
第1.10题解答:
(2/3)n<2100第1.12题解答:
(1)频度为n-1
(2)频度为n-1
(3)频度为n-1
(4)频度为(1+n)*n/2