1 / 25
文档名称:

计算机算法设计与分析实验报告.doc

格式:doc   页数:25页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机算法设计与分析实验报告.doc

上传人:Alphago 2016/6/5 文件大小:0 KB

下载得到文件列表

计算机算法设计与分析实验报告.doc

文档介绍

文档介绍:华北电力大学实验报告|| 实验名称算法设计实验课程名称算法设计与分析||专业班级: 信安 130 1学生姓名: 学号: 成绩: 指导教师: 胡朝举实验日期: 2015 年 11月华北电力大学实验报告第页共页实验一、归并排序(Merging Sort) ——分治策略一、实验内容归并排序是一个非常优秀的排序方法,也是典型的分治策略的典型应用。实验要求: ( 1)编写一个模板函数: template <typename T> MergeSort(T *a, int n); 以及相应的一系列函数,采用分治策略,对任意具有: bool operator<(const T&x,const T&y); 比较运算符的类型进行排序。(2)与 STL 库中的函数 std::sort(..) 进行运行时间上的比较, 给出比较结果,如:动态生成 100 万个随机生成的附点数序列的排序列问题,给出所用的时间比较。归并排序就是将两个或两个以上的有序表合并成一个有序表的过程。将两个有序表合并成一个有序表的过程称为 2- 路归并。二、主要思想假设初始序列含有 n 个记录,则可看成 n 个有序的子序列,每个字序列的长度为 1 ,然后两两归并, 得到[n/2] 个长度为 2或1 的有序子序列; 再两两归并, ..., 如此重复, 直到一个长度为 n 的有序序列为止。例已知待排序记录的关键字序列为{49,38,65,97,76,13,27} ,给出 2- 路归并排序法进行排序的过程 2- 路归并排序中的核心操作是, 将待排序序列中前后相邻的两个有序序列归并为一个有序序列。相邻两个有序子序列的归并华北电力大学实验报告第页共页设两个有序表存放在同一数组中相邻的位置上: R[low..mid] 和 R[mid+1..high] , 每次分被从两个表中取出一个记录进行关键字的比较, 将较小者放入 T[low..high] 中, 重复此过程, 直至其中一个表为空,最后将另一非空表中余下的部分直接复制到 T 中。三、实验结果四、算法分析 1)时间复杂度当有 n个记录时,需进行[log2n] 趟归并排序,每一趟归并,其关键字比较次数不超过 n, 元素移动次数都是 n,因此,归并排序的时间复杂度为 O(nlog2n) 。 2)空间复杂度用顺序表实现归并排序时,需要和待排序记录个数相等的辅助存储空间,所以空间复杂度为 O(n); 五、实验代码#include<> #include<algorithm> #include<> #include<> #include<> using namespace std; template<class Type> void MergSort(Type a[], int n){ Type *b= new Type[n]; ints=1; while (s< n){ MergPass(a, b, s, n); s += s; MergPass(b, a, s, n); s += s;}} template<class Type> void MergPass(Type x[], Type y[], int s, intn) { inti=0; while (i <= n-2* s) { Merg(x, y, i,i+s-1,i+2*s- 1); i=i+2* s;} if (i+s<n) 华北电力大学实验报告第页共页 Merg(x, y, i,i+s-1,n- 1); else{ //如果剩下的不够 i+s ,则把剩下的放入 y中 for (int j= i;j <= n-1; j++){ y[j] = x[j]; }}} template<class Type> void Merg(Type c[], Type d[], int l, int m, int r){ inti= l,j=m+1,k= l; while ((i <= m) && (j <= r)){ if (c[i] <= c[j]) d[k++] = c[i++]; else d[k++] = c[j++]; } if (i>m) for (int q= j;q <= r; q++) d[k++] = c[q]; else for (int q= i;q <= m; q++) d[k++] = c[q]; } float randf(float base, float up){ return (rand() % (int)((up - base) * RAND_MAX)) / (float)RAND_MAX ; //产生随机数} void printArray(float *a,int N){ for(int i=0;i<=

最近更新

20xx教师感恩奉献的演讲稿 8页

20XX推普周方案及总结 12页

20xx托班的语言教案模板 12页

20xx感恩节英文祝福 英语祝福感恩节句子 5页

20xx志愿服务工作心得体会 9页

20xx建国70周年纪念日心得体会 国庆节爱国作文.. 10页

20xx幼师个人工作总结范文精选 19页

参芪苡术汤联合化疗治疗中晚期胃癌的近期疗效.. 2页

20xx年销售主管工作计划范文 10页

20xx年运动会加油稿精选范文10篇 5页

20xx年第二学期防溺水安全教育工作总结 7页

原发性胃淋巴瘤的临床特征及预后分析 2页

20xx年班委会工作计划 5页

厌氧膜生物反应器处理猪粪水的氨氮抑制调控研.. 2页

20xx年教师顶岗实习总结报告 17页

印染废水的臭氧降解和焦化废水尾水的深度处理.. 2页

20xx年度保洁工作计划例文 11页

20xx年小学六年级快乐的暑假作文600字 7页

20xx年学雷锋志愿服务系列活动方案(2) 11页

南方红壤区典型小流域水土保持综合效益评价 2页

南宋前期两浙地区的灾荒与救灾措施研究 2页

美丽的中学作文锦集8篇 7页

美丽的插曲作文(优秀5篇) 5页

20xx年劳动合同简单模板5篇 20页

照明行业分析报告 32页

应急演练评估表、评价表、评审表(模板) 3页

新版初中地理知识点:探索宇宙 2页

广西壮族自治区物业管理服务等级标准指导意见.. 17页

汽车半主动悬架智能控制算法研究 93页

党支部开展警示教育活动总结警示教育大会会议.. 7页