ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:55.39KB ,
资源ID:3032094      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3032094.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《算法分析与设计》实验指导书学时.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《算法分析与设计》实验指导书学时.docx

1、算法分析与设计实验指导书学时数理学院算法分析与设计实验报告姓名:学号:班级:实验一 分治策略排序.3实验二 减治策略查找顺序表.5实验三 动态规划求解0/1背包问题.8实验四 贪心算法求解最短路径问题.10实验一 分治策略排序实验目的1)以排序问题为例,掌握分治法的基本设计策略;2)熟练掌握合并排序算法的实现;3)熟练掌握快速排序算法的实现;4) 理解常见的算法经验分析方法。实验环境计算机、C语言程序设计环境实验学时2学时实验内容与步骤1. 准备实验数据要求:编写一个函数data-generate,生成2000个在区间1,10000上的随机整数,并将这些数输出到外部文件data.txt中。这些

2、数作为本算法实验的输入数据。2. 实现合并排序算法要求:实现mergesort算法。输入:待排数据文件data.txt;输出:有序数据文件resultsMS.txt(注:建议将此排好序的数据作为实验二的算法输入);程序运行时间TimeMS。合并排序算法(类C语言):/* 数组A 中包含待排元素;array B is a work array */TopDownMergeSort(A, B, n) TopDownSplitMerge(A, 0, n, B);/ iBegin is inclusive; iEnd is exclusive (即:AiEnd不是待排元素)TopDownSplitMe

3、rge(A, iBegin, iEnd, B) if(iEnd - iBegin 2) / 如果只有1个待排元素,返回。 return; / recursively split runs into two halves until run size = 1, / then merge them iMiddle = (iEnd + iBegin) / 2; / 划分 TopDownSplitMerge(A, iBegin, iMiddle, B); TopDownSplitMerge(A, iMiddle, iEnd, B); TopDownMerge(A, iBegin, iMiddle, i

4、End, B); / 合并;元素放到数组B中。 CopyArray(B, iBegin, iEnd, A); / copy the merged runs back to A/ left half is AiBegin : iMiddle-1/ right half is AiMiddle : iEnd-1TopDownMerge(A, iBegin, iMiddle, iEnd, B) i0 = iBegin, i1 = iMiddle; / While there are elements in the left or right runs for (j = iBegin; j iEnd;

5、 j+) / If left run head exists and is = existing right run head. if (i0 = iEnd | Ai0 = Ai1) Bj = Ai0; i0 = i0 + 1; else Bj = Ai1; i1 = i1 + 1; CopyArray(B, iBegin, iEnd, A) for(k = iBegin; k iEnd; k+) Ak = Bk;3. 实现快速排序算法要求:实现QuickSort 算法。输入:待排数据文件data.txt;输出:有序数据文件resultsQS.txt(注:建议将此排好序的数据作为实验二的算法输

6、入);程序运行时间TimeQS。快速排序算法(伪码):Procedure QuickSort(p, q)integer p, q;global n, A(1:n)if p=v repeatloop p=p-1 until A(p)=v repeatif Ipthen A(i) A(p)else exitend ifrepeatA(m)=A(p); A(p)=v;end partition实验报告:实验报告应包括以下内容:(1)题目;(2)2个算法的基本思想描述;(3)程序流程图;(4)给出data.txt、resultsMS.txt、resultsQS.txt三个数据文件;给出TimeMS、T

7、imeQS的数值结果;(5)实验分析;以表或者图的形式给出这两个算法效率的经验分析结果;并和理论分析结论进行对比。(6)说明本次实验的心得体会、经验等。如果程序未通过,应分析其原因。实验二 减治策略查找顺序表实验目的1)以顺序表查找问题为例,掌握减治法的基本设计策略;2)熟练掌握折半查找算法的实现;3)掌握插值查找算法的实现;4) 分析实验结果。实验环境计算机、C语言程序设计环境实验学时2学时实验内容与步骤1. 准备实验数据通过实验一获得的排好序的数据可作为本算法实验的输入数据。2. 实现折半查找算法要求:实现binary_search算法。输入:已排序数据序列A、待查找的数据元素key;输出

8、:数据元素key在数据序列A中的位置。折半查找算法(类C语言):int binary_search(int A, int key, int imin, int imax) while (imin = imax) int imid = midpoint(imin, imax); / 找中点 if(Aimid = key) return imid; else if (Aimid = Alow & key = Ahigh) mid = low + (high - low) * (key - Alow) / ( Ahigh - Alow) ; if (Amid key) low = mid + 1 ;

9、 else if (key Amid) high = mid - 1; else return mid; if (key = Alow) return low ; else return -1;实验报告:实验报告应包括以下内容:(1)题目;(2)2个算法的基本思想描述;(3)程序流程图;(4)程序输入和输出结果;(5)实验分析;以表或者图的形式给出这两个算法效率的经验分析结果;并和理论分析结论进行对比。(6)说明本次实验的心得体会、经验等。如果程序未通过,应分析其原因。实验三 动态规划求解0/1背包问题实验目的1)以0/1背包问题为例,掌握动态规划算法的基本设计策略;2)掌握并实现求解0/1背

10、包问题的动态规划算法;3) 分析实验结果。实验环境计算机、C语言程序设计环境实验学时2学时实验内容与步骤1. 理解0/1背包问题0/1背包问题的描述:已知有n个物品和一个承重为M的背包,物品i的重量为wi、价值为pi。现在的问题是:如果一个物品不能被分割以后部分放进背包,那么该如何装包,才能使背包中物品的价值之和为最大?这个问题可形式化地表述如下:极大化目标函数 约束条件: 2. 准备实验数据确定物品数目n的值,确定各物品的重量(取正整数)和价值;确定背包的承重值M(取正整数)。3. 实现动态规划算法要求:实现MFKnapsack算法。输入:参数i(初次调用时为物品总数n),j(初次调用时为空

11、包承重M);全局变量:物品重量Weights1.n,价值Values1.n;输出:这i个物品的最优子集的价值。算法 MFKnapsack(i, j)(伪码):/ 另有全局变量V0.n, 0.M存放已经解决的子问题的结果;V初始化:V0,*=0、V*,0=0,其他元素值初始化为负数。if Vi,j 0 / 此问题还没有解if j Weightsivalue MFKnapsack(i-1, j)elsevalue maxMFKnapsack(i-1, j), Valuei+MFKnapsack(i-1, j-Weightsi)Vi,j valuereturn Vi,j4. 修改以上算法,以输出最大

12、装包价值对应的那些装包物品。实验报告:实验报告应包括以下内容:(1)题目;(2)算法的基本思想描述;(3)程序流程图;(4)给出实验内容4所要求的算法伪码或程序清单;(5)实验分析:分析算法效率;(6)说明本次调试实验的心得体会、经验等。如果程序未通过,应分析其原因。选做实验 动态规划求解最短路径问题实验目的:1)以解决最短路径问题为例,掌握动态规划的基本设计策略;2)掌握Floyd动态规划算法求解完全最短路径问题并实现;3)分析实验结果。实验环境计算机、C语言程序设计环境实验学时2学时实验内容与步骤1. 准备实验数据假设算法要处理下图,需要把图数据组织存放到相应的数据结构中,如:权值矩阵float graphmaxsizemaxsize。2实现Floyd算法用Floyd算法求一个图中所有点对之间的最短距离。输入:存储图数据的权值矩阵float graphmaxsizemaxsize;输出:保存到文件floyd-out

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

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