C++分治法求最值.doc_第1页
C++分治法求最值.doc_第2页
C++分治法求最值.doc_第3页
C++分治法求最值.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验内容:用分治法求最大最小值题目来源: 教材 页 题 教师补充 自选题目主要功能描述:(1) 对一组数进行比较大小,求出其中的最大值和最小值,利用分治法的原理来实现。(2) 先对数组中元素个数进行判断,只有一个元素时,最大值max和最小值min都是它本身;当有两个元素时,比较两个数的大小,大者为最大值max,小者为最小值min;当数组中元素多于两个时,里用分治法原理,递归调用MaxMin函数,求出划分出的每组中的最值与另外一组最值比较,最后的得出最大值max和最小值min。设计分析:分析数组中的元素:有一个元素、两个元素、两个以上元素(1) 最大值最小值都是同一个元素,不用判断直接赋值min、max(2) 两个元素时:判断两个元素的大小,大数为最大值max,小数为最小值min(3) 两个以上元素是:使用函数void SortableList:MaxMin(int i,int j,T &max,T &min)const ;里用分治法的原理,把问题变成可以用两个元素或者一个元素求出最值,然后比较每次求出的两个最值的大小,大数为max,小数为min,直到最后求出最大值max和最小值min。典型测试数据测试:520 30 40 456 12 812 8 20 60 50 123 87 100125220 30输出:程序及运行结果正误判断: 非常好 正确,还可改进 基本正确,还需改进 还有错误 不足之处或设计经验小结: 任课教师评语:教师签字: 年月日程序设计课程上机实验报告注:每学期至少有一次设计性实验。每学期结束请任课教师按时按量统一交到教学秘书处。源程序文件名及组成文件:重要变量用途说明 算法描述#include /导入头文件using namespace std;template /template函数模板 class SortableList private: T *array; /定义数组,用来存储求最值的数组int maxSize; /定义数组长度public: SortableList();void SetMaxSize() coutmaxSize; /输入数组长度array=new TmaxSize; /定义存储空间 int GetMaxSize() /返回数组长度 return maxSize; void InputArray() /输入数组中元素int i;for(i=0;imaxSize;i+)cout请输入(i+1)arrayi;void dispayArray() /输出数组中元素int i;cout输出数组中元素为:;for(i=0;imaxSize;i+)coutarrayi ;coutendl;void MaxMin(int i,int j,T &max,T &min)const; /最值函数声明SortableList()delete array; /定义析构函数,释放空间; template void SortableList:MaxMin(int i,int j,T &max,T &min)const /定义求最大值,最小值函数 T min1,max1; if(i=j) max=min=arrayi; else if(i=j-1) if(arrayiarrayj) max=arrayj;min=arrayi; else max=arrayi;min=arrayj; else int m=(i+j)/2; MaxMin(i,m,max,min); /求前半部子表中的最大、最小元 MaxMin(m+1,j,max1,min1); /求后半部子表中的最大、最小元 if(maxmin1)min=min1; /两表中最小元的小者为原表最小元 int main() int Max,Min; /存储数组中的最大,最小值int size;SortableList a; a.SetMaxSize();size=a.GetMaxSize()-1; /取得数组元素中最大下标值a.InputArray();a.di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论