《计算机算法设计与分析》实验报告-线性时间选择

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

福州大学数计学院《计算机算法设计与分析》实验报告专业:数理综合班学号081200416姓名林灵锋班级数理综合班实验名称线性时间选择实验主要内容熟悉编程实验目的和要求一、利用RandomizedSelect和Select算法找出n个元素中第k小的元素。二、设计思想:递归调用select函数求解算法时间复杂度:n75时,T(n)=C1;n=75时,T(n)=C2n+T(n/5)+T(3n/4);问题描述和主要步骤一、程序:#includestdlib.h#includectime#includeiostreamusingnamespacestd;templateclassTypevoidSwap(Type&x,Type&y){Typetemp=x;x=y;y=temp;}templateclassTypevoidBubbleSort(Typea[],intp,intr){for(inti=p;i=r-1;i++)for(intj=r-1;j=i;j--){if(a[j]a[j-1]){Swap(a[j],a[j-1]);}}}templateclassTypeintPartition(Typea[],intp,intr,Typex){inti=p-1,j=r+1;while(true){while(a[++i]x&&ir);while(a[--j]x);if(i=j){break;}Swap(a[i],a[j]);}a[j]=x;returnj;}templateclassTypeTypeSelect(Typea[],intp,intr,intk){if(r-p75){BubbleSort(a,p,r);returna[p+k-1];}for(intm=0;m=(r-p-4)/5;m++){BubbleSort(a,p+5*m,p+5*m+4);Swap(a[p+5*m+2],a[p+m]);}Typex=Select(a,p,p+(r-p-4)/5,(r-p-4)/10);inti=Partition(a,p,r,x);intj=i-p+1;if(k=j){returnSelect(a,p,i,k);}else{returnSelect(a,i+1,r,k-j);}}intRandom(intx,inty){intn=rand()%(y-x)+x;returnn;}intmain(){inta[100],k;srand((unsigned)time(NULL));cout随机输入的100个数为:;coutendl;for(inti=0;i100;i++){a[i]=Random(0,200);couta[i]:a[i];}coutendl;cout请输入所搜索的k=;cink;cout第k小元素是Select(a,0,99,k)endl;BubbleSort(a,0,99);cout将这100个数排序后的结果是:;coutendl;for(intj=0;j100;j++){couta[j]:a[j];}coutendl;cout第k小元素是a[k-1]endl;coutendl;return0;}实验结果(截图表示)研究与探讨说明:实验名称为教学大纲中各章的实验项目名称,实验内容为具体章节的实验内容名称

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功