




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析实验报
告专业班级姓名学号实验名称实验一:递归与分治算法设计实验目的掌握递归与分治策略的基本思想。通过设计求解给定问题的递归算法和分治算法学会使用递归和分治法解决问题的一般技巧。实验内容二分搜索问题:设a[0:n-1]是己排好序的数组。试改写二分搜索算法,使得当搜索元素x不在数组a中时,返回小于x的最大元素的位置i和大于x的最小元素的位置j;当搜索元素x在数组a中时,返回x在数组中的位置,此时i和j相同。假币识别问题:一个袋子里有n个硬币,其中一枚是假币,假币和真币外观一模一样,仅凭肉眼无法区分,但是已知假币比真币轻一些。试设计识别假币的分治算法。_算法描述二分搜索问题的解题思路或算法思想:将n个元素分成个数大致相同的两半,取a[n/2]与x进行比较。如果x=a[n/2],则找到x算法终止,如果x<x[n/2],则在数组的右边部分继续搜索,如果x<x[n/2],则在数组的左边部分继续搜索。假币识别问题的解题思路或算法思想:将这n个硬币分成两等份,然后放到天平的两端,则假币在较轻的那一端;然后将较轻的那端的硬币再分成2等份,然后再放到天平的两端进行比较,假币还是在较轻的那一段;直到最后只剩下两个硬币了,分别放到天平的两端,轻的哪个就是假币。当然,最后也可能剩下3个硬币,我们可以将这3个硬币中任意拿出来个,然后将剩下的两个放到天平的两端,如果天平是平的,则说明拿出来的那个硬币就是假币;如果天平不是平的,则轻的那端是假币。程序及运行结果1.二分搜索问题的程序:packagecom.tl;importjava.util.Scanner;publicclassDigui(publicstaticintbinarySearch(inta[],intx,intleft,intright)(intmid=0;
while(left<right)(mid=(left+right)/2;if(a[mid]==x)returnmid;if(a[mid]>x)(right=mid-1;}else(left=mid+1;}}returnleft;}}publicstaticvoidmain(String[]args)(int[]a=newint[]{2,3,4,5,6,8,9};//0123456Scannerscn=newScanner(System.沮);intx=scn.nextInt();intm=newDigui().binarySearch(a,x,0,a.length-1);if(a[m]==x){System.。以.println(”与x相等的薮据元素的下标是"+m);}else{System.。以.println("不、存在"+x);if(a[m]>x){System.。以.println("比x大的取小数组儿素的下标是”+m);if((m-1)<0){System.。以.println("不存在比x小的数组元素");}}else{System.。以.println("比x小的最大数组兀素的下标是”+m);if(m>=a.length-1){System.。以.println("不存在比x大的数组元素”);}else{System.。以.println(”上匕x大的取小数组儿素的下标是"+(m+1));}}}}实例:1)0相存在。比甚大的最小数组元麦的下标是。不存在比*卜的数组元素2)10忆存在比不小的最大数组元素的下标是6不存在比*大的数组元素3)不存在7比*小的最大数组元素的下标是4比x大的最小致组元素的下标是54)与对目等的数据元素的下标是22.假币识别问题的程序:packagecom.t3;〃假币问题importjava.util.Scanner;publicclassMain(staticfinalintMAXNUM=20;privatestaticintFalseCoin(int[]coin,intlow,inthigh)(intsum1=0,sum2=0,sum3=0;intre=0;if(low+1==high)(if(coin[low]<coin[high])(re=low+1;returnre;}else(re=high+1;returnre;if((high-low+1)%2==0){//如果n是偶数〃前半段for(inti=low;i<=low+(high-low)/2;i++){sum1=sum1+coin[i];//后半段for(inti=low+(high-low)/2+1;i<=high;i++){sum2=sum2+coin[i];if(suml>sum2)(re=FalseCoin(coin,low,low+(high-low)/2);returnre;}elseif(sum2>sum1)(//sum2>sum1re=FalseCoin(coin,low+(high-low)/2+1,high);returnre;}}else{//如果是奇数〃前半段,除去中间的一个硬币for(inti=low;i<=low+(high-low)/2-1;i++){sum1=sum1+coin[i];}//后半段,除去中间的一个硬币for(inti=low+(high-low)/2+1;i<=high;i++){sum2=sum2+coin[i];}sum3=coin[low+(high-low)/2];if(sum1>sum2){re=FalseCoin(coin,low,low+(high-low)/2-1);returnre;}elseif(sum2>sum1){re=FalseCoin(coin,low+(high-low)/2+1,high);returnre;}if(sum1==sum2){re=low+(high-low)/2+1;returnre;}}returnre;}publicstaticvoidmain(String[]args){int[]coin=newint[MAXNUM];System.o以.println("请输入硬币总的个数:");Scannerin=newScanner(System.in);
intn=in.nextInt();System—以.println("请输入所有硬币质量:");for(inti=0;i<n;i++)(coin[i]=in.nextInt();}intp=FalseCoin(coin,0,n-1);System.—以.println("假币在"+p+"个位置");}}实例:1)请输入硬币总的个数:6请输入所有硬币质里:111121偏币在5个位置2)清输人硬币总的个教:7请输人所有硬币质量:1211111幅币在2个位置实验心得体会:通过该试验,我掌握递归与分治策略的基本思想,并通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出摊货架转让合同范本
- 农村田地征用合同范本
- 临时股合同范本
- 代课老师合同范本
- 冰箱采购谈判合同范本
- 半永久加盟合同范本
- 健身器合同范本
- 养殖鸽子合作合同范本
- 制作商家广告合同范本
- 出租协议合同范本
- 2024年卫生资格(中初级)-内科学主治医师笔试考试历年真题含答案
- 消防设施维保服务投标方案
- 城市轨道交通车辆电气控制 课件 赵丽 第1-4章 城市轨道交通车辆电气控制系统构成、城市轨道交通车辆辅助供电系统、电动列车常用电气控制系统及其控制方法
- (2024年)新版黄金基础知识培训课件
- 资产拆除报废申请表
- 《社区康复》课件-第九章 言语障碍患者的社区康复实践
- 万千教育学前让幼儿都爱学习:幼儿园高质量学习活动设计与组织
- 保胎患者护理
- 绿之源家电清洗调查问卷
- 孕前优生检查培训课件
- 《医药板块分析》课件
评论
0/150
提交评论