已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法分析实验报告实验一 分治策略排序实验目的1)以排序问题为例,掌握分治法的基本设计策略;2)熟练掌握合并排序算法的实现;3)熟练掌握快速排序算法的实现;4) 理解常见的算法经验分析方法。实验环境计算机、C语言程序设计环境、VC+6.0实验步骤算法的基本描述:1、 合并排序的基本思想描述:首先将序列分为两部分,分到每组只有两个元素,然后对每一部分进行循环递归地合并排序,然后逐个将结果进行合并。2、 快速排序的基本思想描述:将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最后达到排序效果。要求:编写一个函数data-generate,生成2000个在区间1,10000上的随机整数,并将这些数输出到外部文件data.txt中。这些数作为本算法实验的输入数据。程序流程图:合并排序原理图快速排序流程图1.生成2000个随机整数的程序:#include#include#includeint main()FILE *fpt;fpt = fopen(D:/data.txt,w);srand(time(0);for(int i=0;i2000;i+)fprintf(fpt,%3dt,rand()%10000+1);return 0;fclose(fpt);并生成data.txt文件。2.读取data.txt文件,并排序。实现合并排序算法输入:待排数据文件data.txt;输出:有序数据文件resultsMS.txt合并排序算法:#include #include #include void mergesort(int a,int n); void merge(int a,int b,int i,int c,int j); int main() int a2000; int i=0,j; FILE *fpt; fpt=fopen(D:data.txt,r);if(fpt=fopen(D:data.txt,r)=NULL)printf(n error!);exit(0);while (fscanf(fpt,%d,&ai)!=EOF)i+; mergesort(a,2000); fpt = fopen(D:/resultMS.txt,w); srand(time(0); for(j=0;j2000;j+) printf(%d ,aj); fprintf(fpt,%3dt,aj); fclose(fpt); return 0; void mergesort(int a,int n) if(n=1) return; int i,j; int *b; int *c; b=(int *)malloc(sizeof(int)*(n/2); c=(int *)malloc(sizeof(int)*(n-n/2); for(i=0;in/2;i+) bi=ai; for(j=0;jn-n/2;j+) cj=aj+n/2; mergesort(b,(n/2); mergesort(c,(n-n/2); merge(a,b,(n/2),c,(n-n/2); void merge(int a,int b,int x,int c,int y) int i=0; int j=0; int k=0; while(ix)&(jy) if(bi=cj) ak=bi; i+; else ak=cj; j+; k+; int l; if(i=x) for(l=j;ly;l+) ak=cl; k+; else for(l=i;lx;l+) ak=bl; k+; 运行结果为:并且在D盘内生成resultMS.txt文件。resultMS.txt内的数即为随机生成的数的排序。3.实现QuickSort 算法。输入:待排数据文件data.txt;输出:有序数据文件resultsQS.txt程序:#include #include #include int partions(int l,int low,int high)int prvotkey=llow;l0=llow;while (lowhigh) while (low=prvotkey) -high; llow=lhigh; while (lowhigh&llow=prvotkey) +low; lhigh=llow;llow=l0;return low;void qsort(int l,int low,int high)int prvotloc;if(lowhigh) prvotloc=partions(l,low,high); /第排序结作枢轴 qsort(l,low,prvotloc-1); /递归调用排序 由low prvotloc-1 qsort(l,prvotloc+1,high); /递归调用排序 由 prvotloc+1 highvoid quicksort(int l,int n)qsort(l,1,n); /第作枢轴 第排第nvoid main()int a2000;int i=0;FILE *fpt; fpt=fopen(D:data.txt,r);if(fpt=fopen(D:data.txt,r)=NULL)printf(n error);exit(0);while (fscanf(fpt,%d,&ai)!=EOF)i+;quicksort(a,2000);fpt=fopen(D:resultsQS.txt,w);srand(time(0);for(int j=1;j2000;j+)printf(%3dt,aj);fprintf(fpt,%3dt,aj);fclose(fpt);运行的结果:生成resultsQS文件程序运行的时间:TimeMS的运行时间为0.0000msTimeQS的运行时间为:产生的原因:可能是计算机运行速度太快,两者运行时间没有太大的差距,所以程序运行的时间约为0.实验分析:从理论上看,快速排序最好情形的时间复杂度为O(NlogN),最坏的情形为O(N*N),平均时间复杂度O(NlogN)。归并排序最好情形的时间复杂度为O(NlogN),最坏的情形为O(NlogN),平均时间复杂度O(NlogN)。因此,可以看出,快速排序算法较之合并排序而言更有优势,尽管保持在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州遵义文旅产业发展(集团)有限公司招聘笔试历年参考题库附带答案详解
- 2025贵州省地质矿产资源开发股份有限公司公开招聘安全环保管理员笔试历年参考题库附带答案详解
- 2026年贵阳康养职业大学单招职业技能考试题库及答案1套
- 2026年信阳航空职业学院单招职业倾向性测试必刷测试卷及答案1套
- 2026年宿州学院单招职业倾向性测试必刷测试卷附答案
- 2025湖南邵阳市武冈市城乡供水有限公司招聘笔试历年备考题库附带答案详解试卷2套
- 2025湖北神农架林区森源环保水务有限公司招聘5人笔试历年参考题库附带答案详解
- 2025浙江丽水市文化旅游投资发展有限公司招聘工作人员33名笔试历年参考题库附带答案详解
- 2025山东威海市乳山鑫蜜客人力资源有限公司招聘劳务派遣人员拟聘用人员(二)笔试历年难易错考点试卷带答案解析试卷2套
- 2025宁夏吴忠市红寺堡区属国有企业招聘(竞聘)管理人员情况及笔试历年典型考点题库附带答案详解试卷2套
- 信息价收集管理办法
- 小学生社团活动课件
- 乙肝防治知识讲座课件
- 《景观规划设计》课件-项目一:乡村景观规划基础
- 售后服务回访跟踪措施
- DB64∕T 2131-2025 建筑施工非常规高处吊篮施工规程
- 地质调查安全培训
- 2024年云南省德宏州工会社会工作者招聘考试真题
- 2025至2030食用菌产业深度调研及发展趋势与发展趋势分析与未来投资战略咨询研究报告
- 冠脉搭桥术后患者的护理
- 前庭大腺脓肿护理常规
评论
0/150
提交评论