- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二分搜索实验报告
重庆交通大学学生实验报告 实验课程名称算法设计与分析开课实验室数学实验室 学院数学与统计学院年级13专业班信息与计算科学2学生姓名辜朕圆学号3开课时间XX至XX学年第1学期 XX-XX学年第一学期 实验报告题目实验一递归与分治策略 开课实验室:数学实验室指导老师:韩逢庆时间:学院:理学院专业:信息与计算科学班级:XX级2班 姓名:辜朕圆学号:3 一、实验目的 1.加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。二、实验内容 题目①设a[0:n-1]是已排好序的数组。请写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 ②写出三分搜索法的程序。三、实验要求 用分治法求解…问题; 再选择自己熟悉的其它方法求解本问题;上机实现所设计的所有算法;四、实验过程设计 1、已知a[0:n-1]是一个已排好序的数组,可以采用折半查找算法。如果搜索元素在数组中,则直接返回下表即可;否则比较 XX-XX学年第一学期 搜索元素x与通过二分查找所得最终元素的大小,注意边界条件,从而计算出小于x的最大元素的位置i和大于x的最小元素位置j。2、先判定输入的数x是否在数组的范围内,再将n个元素分成大致相同的三部分,取在数组a的左三分之一部分中继续搜索x。如果xa[san2],则只需在数组a的右三分之一部分中继续搜索x。上述两种情况不成立时,则在数组中间的三分之一部分中继续搜索x。五、实验结果分析 (1)例子为数组a[1,2,3,4,5,6,7,8,9],n=9,x=9。 实验结果为 (2)例子为数组a[1,2,3,4,5],x=3,n=5。 实验结果为 时间复杂性:最好情况下,最坏情况下 二分搜索每次把搜索区域砍掉一半,很明显时间复杂度为O(logn)。三分搜索法:O空间复杂性分析:O。 六、实验体会 本次试验解决了二分查找和三分查找的问题,加深了对分治法的 XX-XX学年第一学期 理解,收获很大,同时我也理解到学习算法是一个渐进的过程,算法可能一开始不是很好理解,但是只要多看几遍,再实践操作,毕竟实践是检验真理的唯一标准,只要动手就能感受自己写出算法的喜悦,从而良性循环越学越好。七、附录: (1)publicstaticintbinarySearch(inta[],intx,intn) { intleft=0;intright=n-1;inti,j;while(lefta[middle])left=middle+1;elseright=middle-1;} i=right;j=left;return0;} 1;} (2) publicclasssanfen{ publicstaticintsanSearch(int[]a,intx,intn){ intleft=0;intright=n-1;while(rightleft){ if(xa[right]) {(根本不在数组里);break;} intsan1=(left+right)/3;intsan2=2*(left+right)/3;if(x==a[san1]) { (找到了);returnsan1;} elseif(xa[san2])left=san1+1; XX-XX学年第一学期 else{left=san1;right=fan2;}}} } publicstaticvoidmain(String[]args){} sanfens=newsanfen();int[]b={1,2,3,4,5};(b,3,5);return-1; 实验二动态规划 一、实验目的 1.加深学生对动态规划算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。二、实验内容 (1)设计一个O时间的算法,找出由n个数组成的序列的最长单调递增子序列 (2)考虑下面的整数线性规划问题:maxi?1 2 ?cj n ii ,i?1 ?ax n ii ?b xi为非负整数,1a[middle])left=middle+1;elseright=middle-1;i=right;j=left;} return-1;} 2、线性时间算法确定主元素i
文档评论(0)