2022年分治法实现归并排序算法算法设计与分析实验报告 2.pdf

上传人:Che****ry 文档编号:30536334 上传时间:2022-08-06 格式:PDF 页数:8 大小:160.93KB
返回 下载 相关 举报
2022年分治法实现归并排序算法算法设计与分析实验报告 2.pdf_第1页
第1页 / 共8页
2022年分治法实现归并排序算法算法设计与分析实验报告 2.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年分治法实现归并排序算法算法设计与分析实验报告 2.pdf》由会员分享,可在线阅读,更多相关《2022年分治法实现归并排序算法算法设计与分析实验报告 2.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、算法设计与分析实验报告实验名称分治法实现归并排序算法评分实验日期年月日指导教师姓名专业班级学号一.实验要求1. 了解用分治法求解的问题:当要求解一个输入规模为n,且 n的取值相当大的问题时,如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1kn,而且子问题与原问题性质相同,原问题的解可由这些子问题的解合并得出。那末,对于这类问题分治法是十分有效的。2. 掌握分治法的一般控制流程。DanC (p,q) global n ,A1:n; integer m,p,q; / 1p q n if Small(p,q) then return G(p,q); else m=Divide

2、(p,q); / pmq return Combine(DanC(p,m),DanC(m+1,q); endif end DanC 3实现典型的分治算法的编程与上机实验,验证算法的时间复杂性函数。二.实验内容1. 编程实现归并排序算法,程序中加入比较次数的计数功能,输出排序结果和比较次数。2. 输入 10组相同的数据,验证排序结果和完成排序的比较次数。3. 与复杂性函数所计算的比较次数比较。4. 用表格列出比较结果。5. 给出文字分析。三.程序算法1. 归并排序算法procedure MERGESORT(low,high) /A(low;high) 是一个全程数组,它含有high-low+10

3、个待排序的元素/ integer low,high ; if lowmid then for kj to high do /处理剩余的元素/ B(i) A(k) ;i i+1 repeat else for kh to mid do B(i) A(k) ;i i+1 repeat endif 将已归并的集合复制到A end MERGE 2. 快速排序算法QuickSort(p,q) / 将数组 A1:n 中的元素 Ap, Ap+1, , Aq按不降次序排列,并假定 An+1 是一个确定的、且大于 A1:n中所有的数。 / int p,q; global n, A1:n; if pq then

4、j=Partition(p, q+1); / 划分后 j 成为划分元素的位置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - QuickSort(p,j-1); QuickSort(j+1,q); endif end QuickSort procedure PARTITION(m ,p) /退出过程时, p带着划分元素所在的下标位置。/ integer m,p,i ;global A(m:p-1) vA(m);i m /A(m)是

5、划分元素 / loop loop ii+1 until A(i)v repeat /i由左向右移 / loop pp-1 until A(p)v repeat /p由右向左移 / if ip then call INTERCHANGE(A(i),A(p) /A(i)和A(p) 换位 / else exit endif repeat A(m) A(p) ;A(p) v /划分元素在位置p/ End PARTITION四.程序代码1.归并排序#include #include #include #include #define M 11 typedef int KeyType; typedef i

6、nt ElemType; struct rec KeyType key; ElemType data; ; typedef rec sqlistM; class guibing public: guibing(sqlist b) for(int i=0;iM;i+) ri=bi; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - void output(sqlist r,int n) for(int i=0;in;i+) cout

7、setw(4)ri.key; coutendl; void xuanze(sqlist b,int m,int n) int i,j,k; for(i=m;in-1;i+) k=i; for(j=i;jbj.key) k=j; if(k!=i) rec temp=bk; bk=bi; bi=temp; void merge(int l,int m,int h,sqlist r2) xuanze(r,l,m); xuanze(r,m,h); output(r,M); int i,j,k; k=i=l; for(j=m;im&jh;k+) if(ri.key=rj.key) r2k=ri; i+;

8、 else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - r2k=rj; j+; output(r2,M); while(jh) r2k=rj; j+; k+; while(i=m) r2k=ri; i+; k+; output(r2,M); private: sqlist r; ; void main() coutguibingfa1运行结果 :n; sqlist a,b; int i,j=0,k=M/2,n=M; sran

9、d(time(0); for(i=0;iM;i+) ai.key=rand()%80;bi.key=0; guibing gx(a); cout 排序前数组 :n; gx.output(a,M); cout 数组排序过程演示:n; gx.merge(j,k,n,b); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - cout 排序后数组 :n; gx.output(b,M); cin.get(); 2.快速排序#include

10、#include #include #include #define MAXI 10 typedef int KeyType; typedef int ElemType; struct rec KeyType key; ElemType data; ; typedef rec sqlistMAXI; class kuaisu public: kuaisu(sqlist a,int m):n(m) for(int i=0;in;i+) bi=ai; void quicksort(int s,int t) int i; if(st) i=part(s,t); quicksort(s,i-1); q

11、uicksort(i+1,t); else return; int part(int s,int t) int i,j; rec p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - i=s;j=t;p=bs; while(ij) while(i=p.key)j-; bi=bj; while(ij&bi.key=p.key)i+; bj=bi; bi=p; output(); return i; void output() fo

12、r(int i=0;in;i+) coutsetw(4)bi.key; coutendl; private: sqlist b; int n; ; void main() coutkuaisu1.cpp运行结果 :n; sqlist a1; int i,n=MAXI,low=0,high=9; srand(time(0); for(i=0;in;i+) a1i.key=rand()%80; kuaisu px(a1,n); cout 数组排序过程演示:n; px.quicksort(low,high); cout 排序后数组 :n; px.output(); cin.get(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 五.程序调试中的问题相同数字在比较的过程中会使用很多的时间,不能提高排序的速度六.实验结果1.归并排序2.快速排序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁