下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学实验预习报告学院(系): 电信 专业: 班级: 姓 名: 学号: 组: _ 实验时间: 实验室: 实验台: 指导教师签字: 成绩: 实验名称Merge sort一、 实验目的和要求(一)、实验目的Design the merge sort algorithm and implement it in C language设计归并排序算法并于C语言实现。(二)、实验要求Requirements:1) Analyze the time complexity of your algorithm2) Submit the document explaining your algorithm
2、as well as the source code. 要求:1) 分析算法的时间复杂度。2) 提交的文档中说明你的算法和源代码。二、实验原理归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可解决了上面的合并有序数列问题,再来看归并排序,其的基本思路就是将数组分成二组A,B,如果这二组组内的数据都是有序的,那么就可以很方便的将
3、这二组数据进行排序。如何让这二组组内数据有序了?可以将A,B组各自再分成二组。依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了。这样通过先递归的分解数列,再合并数列就完成了归并排序。大连理工大学实验报告学院(系): 电信 专业: 电创 班级: 1501 姓 名: 陈晓牛津 学号: 组: _ 实验时间: 2017/4/18 实验室: 实验台: 指导教师签字: 成绩: 实验名称Merge sort一、 算法分析归并组合功能:用二分检索查找的方法采用从低部分,高部分进行查找建立一个新的数组,将小的数放入新的数组中。 归并排序功能;利用递归进
4、行排序,先查找中点位置,再对前部分查找,然后后部分,将小的数据放入新的数组二、 关键代码及注释void mergesort(int *a,int left,int right)int mid; if(left right) /* 分组条件 */ mid = (left + right)/2; /* 取中点 */ mergesort(a,left,mid); /* 左边分组 */ mergesort(a,mid+1,right); /* 右边分组 */ partition(left,mid,right); /* 归并函数*/三、 运行结果四、 代码#includeint a=70,66,88,7
5、0,45,90,33,66,70,22,11,90,11,90,11,90,k = 0;int i;void mergesort(int *a, int left, int right);void partition(int left, int mid, int right);int main()printf(要排序的数组为:n); /* 输出要排序的数 */ for(i = 0; ai != NULL; i+) printf(%4d,ai);printf(n); mergesort(a,0,15); /* 归并排序 */ printf(则结果为:n); for(i = 0; ai != NU
6、LL; i+) /* 经过排序之后输出数组a */ printf(%4d,ai);printf(n);void mergesort(int *a,int left,int right)int mid; if(left = m & l mid+1) /* 终止条件为数组元素用尽 */ if(al am) /* 如果左边的小,则将左边的元素赋值给b */ bh+ = al+; else /* 否则将右边元素赋值给b */ bh+ = am+; if(right m) /* 如果右边的元素用完,则将左边的元素全部赋值给数组b,完成一趟排序 */ for(; l mid) /* 如果是左边的用完,则同理将右边的全部赋值给数组b */ for(; m = right; m+) bh+ = am; for(; left = right; left+) /* 完成归并,将数组b复制给数组a, 控制变量尤为重要 */ aleft = bj+;printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量目标及保证措施
- 关于终止员工劳动合同的确认函5篇
- 2025年吉林省吉林市国家职业技能鉴定考评员题库及答案
- 车间重金属中毒应急预案演练脚本
- 法制安全意识增强预防意外伤害小学主题班会课件
- 2026年熔化焊接与热切割操作证考试题库及答案
- 2026年金融投资风险分析与评估考试试卷及答案
- 城市共享单车停放设施施工方案及技术措施
- 一年级声母书写题目及答案
- 一年级面试入学题目及答案
- 低温甲醇洗脱硫脱碳技术
- 会计事务所业务合作协议
- 外墙三明治板施工方案
- 新课标-人教版四年级数学上册第三单元《角的度量》教材分析
- 实验设计与统计分析
- 胰岛素泵操作流程课件
- 头部损伤护理查房课件
- 2023年模具业界掀起低碳环保时代风报告模板
- 地下室聚氨酯防水技术交底
- 大学英语四级真题阅读练习10套(附参考答案)
- 贵阳市普通中学2022-2023学年度高一下学期期末语文试题(扫描版含答案)
评论
0/150
提交评论