算法设计与分析实验报告Word文档格式.docx

上传人:b****1 文档编号:13779374 上传时间:2022-10-13 格式:DOCX 页数:37 大小:116.31KB
下载 相关 举报
算法设计与分析实验报告Word文档格式.docx_第1页
第1页 / 共37页
算法设计与分析实验报告Word文档格式.docx_第2页
第2页 / 共37页
算法设计与分析实验报告Word文档格式.docx_第3页
第3页 / 共37页
算法设计与分析实验报告Word文档格式.docx_第4页
第4页 / 共37页
算法设计与分析实验报告Word文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

算法设计与分析实验报告Word文档格式.docx

《算法设计与分析实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《算法设计与分析实验报告Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

算法设计与分析实验报告Word文档格式.docx

2.5实验结果……………………………………………………………………18

实验三动态规划…………………………………………………………………20

3.1实验要求……………………………………………………………………20

3.2实验容……………………………………………………………………20

3.3核心算法……………………………………………………………………20

3.4程序代码……………………………………………………………………21

3.5实验结果……………………………………………………………………24

实验四深度优先搜索……………………………………………………………26

4.1实验要求……………………………………………………………………26

4.2实验容……………………………………………………………………26

4.3核心算法……………………………………………………………………26

4.4程序代码……………………………………………………………………27

4.5实验结果……………………………………………………………………28

实验五回溯法………………………………………………………………………30

5.1实验要求……………………………………………………………………30

5.2实验容……………………………………………………………………30

5.3核心算法……………………………………………………………………30

5.4程序代码……………………………………………………………………31

5.5实验结果……………………………………………………………………33

实验一分治法

一.实验要求

1.了解用分治法求解的问题:

当要求解一个输入规模为n,且n的取值相当大的问题时,

如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1<

k≤n,而且子问题与原问题性质相同,原问题的解可由这些子问题的解合并得出。

那末,对于这类问题分治法是十分有效的。

2.掌握分治法的一般控制流程。

DanC(p,q)

globaln,A[1:

n];

integerm,p,q;

//1£

n

ifSmall(p,q)thenreturnG(p,q);

elsem=Divide(p,q);

//p£

m<

q

returnCombine(DanC(p,m),DanC(m+1,q));

endif

endDanC

3.实现典型的分治算法的编程与上机实验,验证算法的时间复杂性函数。

二.实验容

1.编程实现归并排序算法和快速排序算法,程序中加入比较次数的计数功能,输出排序结果和比较次数。

2.输入10组相同的数据,验证排序结果和完成排序的比较次数。

3.与复杂性函数所计算的比较次数比较。

4.用表格列出比较结果。

5.给出文字分析。

三.程序算法

1.归并排序算法

procedureMERGESORT(low,high)

//A(low;

high)是一个全程数组,它含

有high-low+1≥0个待排序的元素//

integerlow,high;

iflow<

high;

thenmid←,//求这个集合的分割点//

callMERGESORT(low,mid)//将一个子集合排序//

callMERGESORT(mid+1,high)//将另一个子集合排序

callMERGE(low,mid,high)//归并两个已排序的子集合//

endMERGESORT

归并两个已排序的集合

procedureMERGE(low,mid,high)

//A(low:

high)是一个全程数组//

//辅助数组B(low;

high)//

integerh,i,j,k;

h←low;

i←low;

j←mid+1;

whileh≤midandj≤highdo//当两个集合都没取尽时//

ifA(h)≤A(j)thenB(i)←A(h);

h←h+1

elseB(i)←A(j);

j←j+1

i←i+1

repeat

ifh>

midthen

fork←jtohighdo//处理剩余的元素//

B(i)←A(k);

i←i+1

elsefork←htomiddo

将已归并的集合复制到A

endMERGE

2.快速排序算法

QuickSort(p,q)

//将数组A[1:

n]中的元素

A[p],A[p+1],¼

A[q]按不降次序排列,

并假定A[n+1]是一个确定的、且大于

A[1:

n]中所有的数。

//

intp,q;

globaln,A[1:

ifp<

qthen

j=Partition(p,q+1);

//划分后j成为划分元素的位置

QuickSort(p,j-1);

QuickSort(j+1,q);

endQuickSort

procedurePARTITION(m,p)

//退出过程时,p带着划分元素所在的下标位置。

integerm,p,i;

globalA(m:

p-1)

v←A(m);

i←m//A(m)是划分元素//

loop

loopi←i+1untilA(i)≥vrepeat//i由左向右移//

loopp←p-1untilA(p)≤vrepeat//p由右向左移//

ifi<

p

thencallINTERCHANGE(A(i),A(p))//A(i)和A(p)换位//

elseexit

A(m)←A(p);

A(p)←v//划分元素在位置p//

EndPARTITION

四.程序代码

1.归并排序

#include<

iostream.h>

iomanip.h>

stdlib.h>

time.h>

#defineM11

typedefintKeyType;

typedefintElemType;

structrec{

KeyTypekey;

ElemTypedata;

};

typedefrecsqlist[M];

classguibing{

public:

guibing(sqlistb)

{

for(inti=0;

i<

M;

i++)

r[i]=b[i];

}

voidoutput(sqlistr,intn)

{

for(inti=0;

n;

cout<

<

setw(4)<

r[i].key;

cout<

endl;

}

voidxuanze(sqlistb,intm,intn)

inti,j,k;

for(i=m;

n-1;

{

k=i;

for(j=i;

j<

j++)

if(b[k].key>

b[j].key)k=j;

if(k!

=i)

{

rectemp=b[k];

b[k]=b[i];

b[i]=temp;

}

}

voidmerge(intl,intm,inth,sqlistr2)

xuanze(r,l,m);

xuanze(r,m,h);

output(r,M);

k=i=l;

for(j=m;

m&

&

h;

k++)

if(r[i].key<

=r[j].key)

{

r2[k]=r[i];

i++;

}

else

r2[k]=r[j];

j++;

output(r2,M);

while(j<

h)

r2[k]=r[j];

j++;

k++;

while(i<

=m)

r2[k]=r[i];

i++;

output(r2,M);

private:

sqlistr;

};

voidmain()

cout<

"

guibingfa1运行结果:

\n"

;

sqlista,b;

inti,j=0,k=M/2,n=M;

srand(time(0));

for(i=0;

a[i].key=rand()%80;

b[i].key=0;

guibinggx(a);

排序前数组:

gx.output(a,M);

数组排序过程演示:

gx.merge(j,k,n,b);

排序后数组:

gx.output(b,M);

cin.get();

2.快速排序

#defineMAXI10

typedefrecsqlist[MAXI];

classkuaisu

{

kuaisu(sqlista,intm):

n(m)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1