线性时间选择实验报告

上传人:d**** 文档编号:139859119 上传时间:2022-08-22 格式:DOCX 页数:4 大小:50.79KB
收藏 版权申诉 举报 下载
线性时间选择实验报告_第1页
第1页 / 共4页
线性时间选择实验报告_第2页
第2页 / 共4页
线性时间选择实验报告_第3页
第3页 / 共4页
资源描述:

《线性时间选择实验报告》由会员分享,可在线阅读,更多相关《线性时间选择实验报告(4页珍藏版)》请在装配图网上搜索。

1、线性时间选择一. 实验目的:1. 理解算法设计的基本步骤和各步的主要内容、基本要求;2. 加深对递归设计方法基本思想的理解,并利用其解决现实生活中的问题;3. 通过本次试验初步掌握将算法转化为计算机上机程序的方法。二. 实验内容:1. 编写实现算法:给定n个元素,在这n个元素中找到第key小的元素;2. 将输入的数据存储到指定的文本文件中,而输出数据存放到另一个文本文件中,包 括结果和具体的运行时间;3. 对实验结果进行分析。三. 实验操作:1. 线性时间选择的思想:首先将这n个元素分成5组,利用排序算法找到其中的中位数,再将这些中位数 排序找到整个数组的中位数median,以这个中位数med

2、ian为界限,将整个数组划分 为三部分,小于median,等于median和大于median三部分,判断key在哪部分中, 对那部分进行递归调用,直到找到等于key的元素为止。综上判断,其时间复杂度为:T(n)=high) return;int first=low;int last=high;int key=Listfirst;while(firstlast)(while(first=key) -last;Listfirst=Listlast;while(firstlast&Listfirst=key) +first;Listlast=Listfirst;Listfirst=key;quick

3、Sort(List,low,first-1);quickSort(List,last+1,high);3. 实验数据的输入:为了保证实验数据的随机性,本实验采用随机生成的方式提供数据,并将输入 输出数据存储到指定的文本文件中,需要采用C+文件流操作,对于数据的输入, 由于cin对数据的读取会忽略空格和换行操作,故使用cin流来控制数据的输入。输入代码实现:int write()(ofstream outFile;outFile.open(E:/程序设计/practice 1/算法设计与分析/文本文件夹/线性选择数据.txt”,ios:trunc);if(!outFile.is_open() c

4、outoutFile cant open!endl;cout输入随机数的范围:startend;cout输入要查找的数据个数:length;len=length;int* Array=new intlength;for(int i=0;ilength;i+)Arrayi=rand()%(end-start)+start;if(i=0) continue;for(;ji;j+)(while(Arrayi=Arrayj)(Arrayi=rand()%(end-start)+start;j=0;j=0;for(int i=0;ilength;i+) outFileArrayi;outFile.clo

5、se();return length;输出代码实现:int* read(int length)(ifstream inFile;inFile.open(E:/程序设计/practice 1/算法设计与分析/文本文件 夹/线性选择数据.txt);if(!inFile.is_open() coutinFile cant open!endl;int* Array=new intlength;int i=0;while(!inFile.eof()&iArrayi+;return Array;inFile.close();4.查找中位数:首先将所有的数据分成五组,找到每组中的中位数,再从找到的中位数中找

6、到整个 数组的中位数median,利用median将所有的数分成3份,小于median、等于median和大 于median三部分,判断所要找的元素在哪部分中,再将哪部分数据作为整体执行上述操 作,直到数组不能再分为止。代码实现:int grouping(int Array,int length,int key)( int i=0,start=0,group,m=0,n=0;group=length/5;if(group=0)(quickSort(Array,0,length-1);return Arraykey-1;else(int* List=new intgroup;int* Array

7、1=new intlength;int Array21;int* Array3=new intlength;while(group)(quickSort(Array,start,start+4);Listi=Arraystart+2;i+;start+=5;group-;quickSort(List,0,i-1);for(int j=0;jlength;j+)(if(ArrayjListi/2) Array3n+=Arrayj;if(Arrayj=Listi/2) Array20=Arrayj;if(m+1=key) return grouping(Array1,m,key);else return grouping(Array3,n,key-m-1);四.实验数据分析:本次实验采用随机数生成的算法提供数据,故可以提供大量的数据,下面是多次实 验数据的汇总。其中该时间是在查询第500个数据时统计的时间。苗制时行运数据查询时间图表5 15 0 L 0五.实验感受:在实验的测试中,当实验的数据偏大时,会出现溢出的现象,需要对代码中的数组 大小进行扩展,而且会出现程序卡住的现象,需要等待时间。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!