- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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]-
您可能关注的文档
- 实习计划-03外科.doc
- 实习计划湖南环境生物职业技术学院.doc
- 实习转正论文.doc
- 实习论文例文.doc
- 实习项目一串联型直流稳压电源与OTL功率放大电路.doc
- 实习指导书常见外科疾病诊疗要点.doc
- 实习计划安排-上海第二医科大学.doc
- 实习实训报告5-24.doc
- 实二组合逻辑电路应用-加法器数据选择器实验报告.doc
- 实例2教室管理系统数据库设计.doc
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
文档评论(0)