实验项目1蛮力法与分治法应用.doc
《实验项目1蛮力法与分治法应用.doc》由会员分享,可在线阅读,更多相关《实验项目1蛮力法与分治法应用.doc(11页珍藏版)》请在课桌文档上搜索。
1、实验项目1:蛮力法与分治法应用1、 目的与要求:实验目的:了解蛮力法和分治法的根本思想,学会运用蛮力法和分治法解决实际系统设计应用中碰到的问题。实验要求:用蛮力法实现选择、冒泡排序,或旅行商问题、背包问题等问题任选其中之一。用分治法实现合并排序或快速排序。要求写出算法的伪代码描述,并编写程序实现之,相关算法放在函数内实现,主程序给出测试用例,要设计足够多的相关测试用例,验证程序的正确性。注意观察程序执行结果和运行的时间。实验报告要求给出问题定义与算法的伪代码描述,程序设计的代码,算法的测试用例与结果,并分析算法的时间效率,回答指导书中的思考题。2、 实验内容:2 用分治法实现快速排序、合并排序
2、算法。本实验主要是用分治法实现合并排序,快速排序程序等。 合并排序算法描述:MergeSort( A0.p-1) / input 待排序数组 A0.n-1 / output 非降序排列的数组 A0.n-1if ( n1 ) /至少有2个元素Copy A0. n/2-1 to B0. n/2-1; Copy An/2.n-1 to C0. n/2-1; MergeSort( B0. n/2-1 );MergeSort(C0. n/2-1t);Merge (B, C, A); /复制回数组a 快速排序算法描述: QuickSort( A1. r ) if (l p / 将= x的元素交换到左边区域
3、 repeated i=i+1; until Ai p / j Swap( Ai = aj );Swap( Al, Aj ) return j;要求先给出算法的伪代码,然后用C+或其他程序设计语言编写程序实现之,并设计相关的测试用例,验证程序的正确性。测试用例要求达到30个数据以上,或程序生成100个以上的数据,验证并说明程序的正确性。上述实验项目是一般要求,的如学生水平较高,上述这些程序已经掌握,可以设计其他难度较高问题的算法和程序。如:hanoi 塔问题。最后要求结合实验体会,分析算法的时间效率。实验思考题:1、蛮力法的优缺点是什么? 适用什么情况? 2、分治法的根本思想是什么?适用什么情
4、况?说明分治法的优点 和局限性。实验代码:#includeusing namespace std;inline void Swap(int &x,int &y) /交换x,yint temp=x;x=y;y=temp;int Partition(int a,int p,int r) /通过一趟排序将要排序的数据分割成独立的两局部/Partition 以确定一个基准元素aq 对子数组ap:r进展划分int i=p,j=r+1;int x=ap;/一局部的所有数据都比另外一局部的所有数据都要小while(true)while(a+ix&ir);/将x);/将x得元素交换到右边区域if(i=j) b
5、reak;Swap(ai,aj); /交换ai,ajap=aj;aj=x;return j; /返回划分点void QuickSort(int a,int p,int r) /利用递归进展快速排序if(pr)int q=Partition(a,p,r); /Partition返回划分点j,此处使q=j q为分裂点QuickSort(a,p,q-1);/对左半段排序QuickSort(a,q+1,r);/对右半段排序int main() int len;coutlen;int *a=new intlen; /动态生成一个长度为len的数组cout请输入一个数组: ;for(int i=0;iai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 项目 蛮力法 分治 应用

链接地址:https://www.desk33.com/p-23287.html