电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

算法设计与分析的实验报告VIP免费

算法设计与分析的实验报告_第1页
1/14
算法设计与分析的实验报告_第2页
2/14
算法设计与分析的实验报告_第3页
3/14
实验一 递归与分治策略 一、实验目的 1.加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验内容 1、 ①设a[0:n -1]是已排好序的数组。请写二分搜索算法,使得当搜索元素x 不在数组中时,返回小于x 的最大元素位置i 和大于x 的最小元素位置j。 当搜索元素在数组中时,i 和 j 相同,均为x 在数组中的位置。 ②写出三分搜索法的程序。 三、实验要求 ( 1)用分治法求解上面两个问题; ( 2)再选择自己熟悉的其它方法求解本问题; ( 3)上机实现所设计的所有算法; 四、实验过程设计(算法设计过程) 1 、 已知a[0:n -1]是一个已排好序的数组,可以采用折半查找(二分查找)算法。如果搜索元素在数组中,则直接返回下表即可;否则比较搜索元素x 与通过二分查找所得最终元素的大小,注意边界条件,从而计算出小于x 的最大元素的位置i 和大于x 的最小元素位置j。 2、将n 个元素分成大致相同的三部分,取在数组a 的左三分之一部分中继续搜索x 。如果x >a[2(n -1)/3],则只需在数组a 的右三分之一部分中继续搜索x 。上述两种情况不成立时,则在数组中间的三分之一部分中继续搜索x 。 五、实验结果分析 二分搜索法: 三分搜索法: 时间复杂性: 二分搜索每次把搜索区域砍掉一半,很明显时间复杂度为O(log n)。 ( n 代表集合中元素的个数) 三分搜索法:O( 3log3n) 空间复杂度:O( 1)。 六、实验体会 本次试验解决了二分查找和三分查找的问题,加深了对分治法的理解,收获很大,同时我也理解到学习算法是一个渐进的过程,算法可能一开始不是很好理解,但是只要多看几遍,只看是不够的还要动手分析一下,这样才能学好算法。 七、附录:(源代码) 二分搜索法: #include #include int binarySearch(int a[],int x,int n) { int left=0;int right=n-1;int i,j; while(left<=right) { int middle=(left+right)/2; if(x==a[middle]){i=j=middle;return 1;} if(x>a[middle])left=middle+1; else right=middle-1; } i=right;j=left; return 0; } int main() { int a[10]={0,1,2,3,4,5,6,7,8,9}; int n=10; int x=9; if(binarySearch(a,x,n)) cout<<"找到"<

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

算法设计与分析的实验报告

小辰6+ 关注
实名认证
内容提供者

出售各种资料和文档

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群