欢迎来到天天文库
浏览记录
ID:54856885
大小:103.29 KB
页数:35页
时间:2020-04-22
《算法设计与分析软件.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《算法设计与分析》实验报告项目名称分治算法实验专业班级软件工程1503学号3903150333姓名曾永豪实验成绩:批阅教师:年月日实验1《分治算法实验》一、实验目的1.了解分治策略算法思想2.掌握快速排序、归并排序算法3.了解其他分治问题典型算法二、实验内容1.编写一个简单的程序,实现归并排序。2.编写一段程序,实现快速排序。3.编写程序实现循环赛日程表。设有n=2k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其它n-1个选手各赛一次(2)每个选手一天只能赛一场(3)循环赛进行n-1天三、算法思想分析大问题分解为子问题,这些子问题
2、相互独立且与原问题相同。分别求解子问题,合并解,自底向上逐步求出原来问题的解。四、实验过程分析写在代码注释中五、算法源代码及用户屏幕1、归并排序:#includeusingnamespacestd;#defineN7//待排序数据个数voidmerge(intarray[],intp,intq,intr);voidmerge_sort(intdata[],intp,intr);////////////////////////////////////////////////////////////////////////////////////////
3、///////////////////////voidmain(){intdata[]={44,12,145,-123,-1,0,121};cout<<"--------------------array---------------------"<4、ut<5、为两个已经排序序列的起始位置begin2=q+1;end2=r;k=0;while((begin1<=end1)&&(begin2<=end2))//比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置{if(array[begin1]6、++];}while(begin2<=end2)//若第二个序列有剩余,直接拷贝出来粘到合并序列尾{temp[k++]=array[begin2++];}for(i=0;i<(r-p+1);i++)//将排序好的序列拷贝回数组中array[p+i]=temp[i];delete[](temp);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////voidmerge_sort(intdata[],intl7、eft,intright){if(left
4、ut<5、为两个已经排序序列的起始位置begin2=q+1;end2=r;k=0;while((begin1<=end1)&&(begin2<=end2))//比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置{if(array[begin1]6、++];}while(begin2<=end2)//若第二个序列有剩余,直接拷贝出来粘到合并序列尾{temp[k++]=array[begin2++];}for(i=0;i<(r-p+1);i++)//将排序好的序列拷贝回数组中array[p+i]=temp[i];delete[](temp);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////voidmerge_sort(intdata[],intl7、eft,intright){if(left
5、为两个已经排序序列的起始位置begin2=q+1;end2=r;k=0;while((begin1<=end1)&&(begin2<=end2))//比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置{if(array[begin1]6、++];}while(begin2<=end2)//若第二个序列有剩余,直接拷贝出来粘到合并序列尾{temp[k++]=array[begin2++];}for(i=0;i<(r-p+1);i++)//将排序好的序列拷贝回数组中array[p+i]=temp[i];delete[](temp);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////voidmerge_sort(intdata[],intl7、eft,intright){if(left
6、++];}while(begin2<=end2)//若第二个序列有剩余,直接拷贝出来粘到合并序列尾{temp[k++]=array[begin2++];}for(i=0;i<(r-p+1);i++)//将排序好的序列拷贝回数组中array[p+i]=temp[i];delete[](temp);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////voidmerge_sort(intdata[],intl
7、eft,intright){if(left
此文档下载收益归作者所有