实验一递归与分治算法编程-实验报告纸.doc

实验一递归与分治算法编程-实验报告纸.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一递归与分治算法编程-实验报告纸

南京信息工程大学 实验(实习)报告 实验(实习)名称 递归与分治算法编程 实验(实习)日期 得分 指导教师 院 专业 年级 班次 姓名 学号 1.实验目的: 掌握递归与分治策略的基本思想 掌握递归算法在阶乘函数、Ackerman函数、整数划分等问题上的应用 掌握二分查找、合并排序、快速排序等问题的分治算法实现 熟悉MyEclipse或Eclipse等Java开发工具的使用。 2.实验内容: 采用MyEclipse或Eclipse编程实现基于分治策略的二分查找算法。 采用MyEclipse或Eclipse编程实现基于分治策略的合并排序算法。 采用MyEclipse或Eclipse编程实现基于分治策略的合并排序算法。 实验步骤 二分查找 public class Sorting { public static int BinarySearch(int [] a,int x, int n){ int left=0;int right = n-1; while(left=right){ int middle = (left+right)/2; if(x==a[middle]) return middle; if(xa[middle]) left=middle+1; else right = middle-1; } return -1; } public static void main(String args[]){ int x,n; int a[]={1,3,4,5,6,13,25}; x=6; n=7; int s; s=BinarySearch(a,x,n); System.out.println(s); 合并排序 public class Mergesort { public static void mergeSort(int []a ){ int [] b = new int[a.length]; int s=1; while(sa.length){ mergePass(a,b,s); s+=s; mergePass(b,a,s); s+=s; } } public static void mergePass(int []x,int []y,int s){ int i=0; while(i=x.length-2*s){ merge(x,y,i,i+s-1,i+2*s-1); i=i+2*s; } if(i+sx.length) merge(x,y,i,i+s-1,x.length-1); else for(int j=i;jx.length;j++) y[j]=x[j]; } public static void merge(int []c,int []d,int l,int m,int r){ int i=1,j=m+1,k=1; while((i=m)(j=r)) if(c[i]-(c[j])=0) d[k++]=c[i++]; else d[k++]=c[j++]; if(im) for(int q=j;q=r;q++) d[k++]=c[q]; else for(int q=i;q=m;q++) d[k++]=c[q]; } public static void main(String args[]){ int a[]={1,7,2,6,4,5,8,3}; mergeSort(a); for(int i=0;i8;i++) System.out.print(a[i]); } } 快速排序 public class QSort { private static void qSort(int a[],int p,int r) { if(p r){ int q = partition(a,p,r); qSort(a,p,q-1); qSort(a,q+1,r); } } private static int partition(int a[],int p,int r) { int i=p; int j= r + 1; int x=a[p]; int temp; while(true){ while((a[++i]-

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档