算法设计与分析--学生实验报告册.docxVIP

  • 16
  • 0
  • 约1.27万字
  • 约 40页
  • 2017-07-01 发布于辽宁
  • 举报
湖 北 大 学计算机与信息工程学院2016——2017学年度第 1 学期学 生 实 验 报 告 册学生姓名:班 级:学 号:课程名称: 算法设计与分析 任课老师:学生实验守则1、学生在规定的时间内进行实验,不得无故缺席或迟到。2、学生在每次实验前对排定要做的实验应进行预习,并按要求作好预习报告。3、每次实验前,必须交上次实验报告和本次实验预习报告,并经指导教师提问、检查同意后,才可进行本次实验。4、学生进入实验室指定位置后,首先根据仪器清单核对自己使用的仪器是否有缺少或损坏,发现问题及时向指导教师报告,严禁擅自动用别组仪器。5、实验时必须有实事求是、严肃认真的科学态度,严格遵守仪器操作规程和注意事项。6、实验完毕应将实验数据交给指导教师检查,合格后,整理复原好仪器设备,方可离开实验室。7、保持实验室肃静和整洁,不得大声喧哗,乱丢垃圾和吃东西。8、学生在实验过程中,由于不遵守操作规程或未经许可,擅自进行实验而造成事故、损坏仪器设备,应及时报告,并填写损坏清单,按院有关规定进行赔偿。实 验 报 告 单实验名称: Merge sort_________ 同组人 实验室 时间 2016.10.14实验目的: 了解掌握递归和分冶策略中合并排序算法思想,学会运用合并排序算法处理实际问题。二、实验内容: 用Merge sort算法对10个无序的数字进行排序。三、实验代码: #include iostreamusing namespace std;#define N 100int g_array[N]; //存放输入的数字static int count; //存放元素的个数// 初始化函数void Initial(){ cout 请输入元素的个数:; cin count; cout 请输入 count 个元素:; for(int i = 0; i count; i ++) { cin g_array[i]; }}//合并函数void Merge(int a[], int l, int m, int r){ int i = l, j = m+1, k = l; int b[N]; while(i = m j = r) { if(a[i] = a[j]) { b[k++] = a[i++]; } else { b[k++] = a[j++]; } } if(i m) { for(int p = j; p = r; p ++) { b[k++] = a[p]; } } else { for(int p = i; p = m; p ++) { b[k++] = a[p]; } } //把b[]中排好的元素copy到a[]中 for(int q = l; q = r; q ++) { a[q] = b[q]; }}// 归并排序 递归算法表示void MergeSort(int a[], int left, int right){ if(left right) //数组至少要有两个元素 { int i = (right + left)/2; MergeSort(a, left, i); MergeSort(a, i+1, right); Merge(a, left, i, right); //把left到right的元素排序好 }}//打印排好序的数组void Print(){ cout 经过MergeSort后:; for(int i = 0; i count; i ++) { cout g_array[i] ; } cout endl;}int main(){ Initial(); if(count 1) { MergeSort(g_array, 0, count-1); Print(); } else if(count == 1

文档评论(0)

1亿VIP精品文档

相关文档