计算机科学-类库与数据结构_第1页
计算机科学-类库与数据结构_第2页
计算机科学-类库与数据结构_第3页
计算机科学-类库与数据结构_第4页
计算机科学-类库与数据结构_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Labreport

Course:ClassLibrariesandDataStructures

Semester:1stsemesteroftheacademicyear2021-2022

Major:SoftwareEngineering

Class:2020

StudentName:温长银

StudentID:222020321062106

Teacher:ZHAO,Hengjun(赵恒军)

SchoolofComputerandInformationScience

NameTimeComplexityandRuntimeAnalysis

DateOct11,2021Type^Confirmatory

瓯esign

□Comprehensive

1.Objective&Requirements

a)Understandthetheoreticaltimecomplexityofanalgorithmand

knowhowtoanalyzeit

b)Grasptheuseofrandomnumbersandtechniquesformeasuring

executiontimeinC++

c)Graspruntimeanalysisofprogramstoshowtheeffectof

theoreticalcomplexityonthetimecostofrealprogramsby

runningprogramsandmeasuringthetimecost

2.Experimentalenvironment(platformandsoftware)

Windows7(orhigherversions)+VisualStudio2010(orhigher

versions)

1)Experimentalcontentanddesign(MainContent,Procedure,

CodesandResults)

Task1

1.Youareprovidedwithatemplatecontainerbasedonsingly

linkedlist.Pleasereadthesourcecodeandimplementanew

methodAddTail()thatcanaddanewelementattheendof

thelinkedlist.

2.YouareprovidedwithaCompanyandEmployeeclass.Please

implementtwomethodsfortheCompanyclassi.e.

•voidinputEmployeeHead(intn);

•voidinputEmployeeTail(intn);

Theintegernisthemethodargumentthatspecifiesthe

totalnumberofemployeetoinput.inputEmployeeHead()is

basedonAddHead()andinputEmployeeTail()isbasedon

AddTail().Foreachnewemployee,itsnameisofformat

“Employee+ID”,e.g."Employeel23",anditsgrosspay

isarandomlygeneratedinteger.

3.Usingruntimeanalysistomeasurethetimecostsof

inputEmployeeHeadandinputEmployeeTailbyincreasingthe

totalnumberofemployeen,e.g.n=1000,2000,10000,

20000,100000,andsoon.Recordthetimecostsofthe

twomethodsforeachn.Plotthedatainafigureandtrytofit

thedatausingacurve(数据拟合,曲线拟合)。

4.Analyzethetheoreticaltimecomplexityof

inputEmployeeHeadandinputEmployeeTail.Compareyour

theoreticalanalysistotheexperimentaldatayouobtained.

Stepl.

readthesourcecodeandimplementanewmethodAddTail()thatcan

addanewelementattheendofthelinkedlist.

Step2:

implementtwomethodsfortheCompanyclassi.e.

•voidinputEmployeeHead(intn);

•voidinputEmployeeTail(intn);

Theintegernisthemethodargumentthatspecifiesthe

totalnumberofemployeetoinput.inputEmployeeHead()is

basedonAddHead()andinputEmployeeTail()isbasedon

AddTail().Foreachnewemployee,itsnameisofformat

“Employee+ID”,e.g."Employeel23",anditsgrosspay

isarandomlygeneratedinteger.

^defineNULL0

template<classT>

classListTemp

(

private:

structNode

(

Tdata;

Node*next;

};

Node*head;

intsize;

public:

ListTempO;

“ListTemp();

intgetLengthOconst;

boolisEmpty0const;

voidAddHead(constT&newData);

voidAddTail(constT&newData);

);

template<classT>

ListTemp<T>::ListTemp0

(

head=NULL;

size=0;

)

template<classT>

ListTemp<T>::^ListTempO

(

Node*current=head;

Node*temp=NULL;

while(current!=NULL)

(

temp=current;

current=current->next;

deletetemp;

)

)

template<classT>

intListTemp<T>::getLengthOconst

returnsize;

)

template<classT>

boolListTemp<T>::isEmptyOconst

(

returnsize==0;

)

template<classT>

voidListTemp<T>::AddHead(constT&newData)

(

Node*temp=newNode;

temp->next=head;

temp->data=newData;

head=temp;

size++;

)

template<classT>

voidListTemp<T>::AddTail(constnewl);ii(i)

(

//pleaseimplementthis

Node*temp=newNode;

temp->data=newData;

Node*ptr=head;

while((ptr->next)!=NULL)

ptr=ptr->next;

temp->next=NULL;

ptr->next=temp;

size++;

}

#endif

^include“company,h”

ttinclude<iostream>

usingnamespacestd;

voidCompany::inputEmployeellead(intn)

(

//pleaseimplementthis

for(inti=0;i<n;i++)

(

srand((unsignedint)time(0));

strings="Employee”;

stringres=s+to_string(n);

intpay=rand();

Employeeemp(res,pay);

container.AddHead(emp);

)

)

voidCompany::inputEmployeeTail(intn)

(

for(inti=0;i<n;i++)

(

srand((unsignedint)time(0));

strings="Employee”;

stringres=s+to_string(n);

intpay=rand();

Employeeemp(res,pay);

container.AddTail(emp);

)

)

^includeTistTemp.h"

ttinclude"company,h”

ttinclude<ctime>

#include<ioslream>

usingnamespacestd;

intmainO

(

clockibeginl,endl,timel,begin2,end2,time2;

for(intnum=1000;num<100000;num+=1500)

(

Companyemp;

beginl=clock();

emp.inputEmployeeHead(num);

endl=clock();

timel=endl-beginl;

begin2=clock();

emp.inputEmployeeTai1(num);

end2=clock0;

time2=end2-begin2;

cout<<timel<<endl;

cout<<time2<<endl;

)

return0;

)

Result:

HEAD:

X

LinearmodelPolyl:

f(x)=pl*x+p2

Coefficients(with95%confidencebounds):

pl=10.21(9.848,10.57)

p2=-3.495(-7.818,0.8281)

Goodnessoffit:

SSE:353.1

R-square:0.9949

AdjustedR-square:0.9946

RMSE:4.429

Tail:

10000

A5000-

•yvs.x

_.44untitledfit1

o—।iiiiii।

2468101214161820

X

LinearmodelPoly2:

f(x)=pl*xA2+p2*x+p3

Coefficients(with95%confidencebounds):

pl=30.39(28.25,32.54)

p2=-119.2(-165.5,-72.94)

p3=286.8(75.83,497.9)

Goodnessoffit:

SSE:3.072e+05

R-square:0.9984

AdjustedR-square:0.9982

RMSE:134.4

AnswerforAdditionalquestions

Ifthenewnodeisinsertedintothetailofthecurrentlinkedlist,thetimecomplexity

isthesameasthatoftheheaderinsertionmethod.

3.Resultanalysisanddiscussion(Analysisofexperimentalresults

andsumminguptheharvestandtheexistingproblems)

Theheadinsertionmethodisusedtoestablishasinglelinkedlist.Theorderof

readingdataisoppositetotheorderofelementsinthegeneratedlinkedlist.The

insertiontimeofeachnodeis0(1).Ifthelengthofthesinglelinkedlistisn,thetotal

timecomplexityis0(n).

Toestablishasinglelinkedlistbyheadinterpolation,youneedtotraversethe

linkedlist.Theinsertiontimeofeachnodeis0(n).Ifthelengthofthesinglelinked

listisn,thetotaltimecomplexityisO(n2)

UndertheguidanceofMr.Zhao,1un

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论