java实现二分法递归_Java递归实现二分法
/*
递归实现二分法的进化
*/
import java.util.Scanner;
public class RecursionNext2{
public static void main(String[]args)
{
//接收一个要寻找的数
System.out.println("请输入:");
Scanner sc=new Scanner(System.in);
int num = sc.nextInt();
int []a={1,2,3,4,5,6,7,8,9};
int front = 0;
int end=a.length-1;
int index=findArray(a,front,end,num);
System.out.println(index);
}
//递归实现二分法
public static int findArray(int []b,int front,int end,int num)
{
int index=-1;
int mid = (front+end)/2;
if(b==null)
{
return index;
}
if(front<=end){
if(b[mid]==num)
{
return mid;
}
else if(b[mid]num)
{
return findArray(b,front,mid-1,num);
}
}
return -1;
}
}
分析此程序:
首先二分法:
/*
二分法
*/
import java.util.Scanner;
public class bisection{
public static void main(String[]args)
{
int []a={1,2,3,4,5,6,7,8};
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要找的数字");
int num=sc.nextInt();
//调用searchArray()寻找num
int index=searchArray(a,num);
System.out.println(index);
}
//二分法
public static int searchArray(int[]a,int num)
{
int front = 0;
int end=a.length-1;
int count =0;
//判断数组是否为空
if(a==null)
{
return -1;
}
while(front<=end)
{
int mid=(front+end)/2;
System.out.println("第"+(++count)+"次");
if(a[mid]==num)
{
return mid;
}
else if(a[mid]num)
{
end=mid-1;
}
}
return -1;
}
}
递归实际就是实现了循环的作用!
二分法首先你要确定你所穿的数组不是空,并且使数组升序排列
//判断数组是否为空
if(a==null)
{
return -1;
}
第二限制循环的条件
保证front<=end,只有在这个前提下找的的位置才保证是在数组内部寻找
然后再去判断a[mid]是否等于num,若a[mid]num相同原理....
二分法是用front 和end来限制,让a[mid]去比较。
while(front<=end)
{
int mid=(front+end)/2;
System.out.println("第"+(++count)+"次");
if(a[mid]==num)
{
return mid;
}
else if(a[mid]num)
{
end=mid-1;
}
}
java实现二分法递归_Java递归实现二分法相关推荐
- java文件递归_java递归处理文件夹和文件
import java.io.File; /** * 文件综合使用示例 */ public class FileDelete { public static void main(String[] ar ...
- java xml 递归_Java递归遍历XML所有元素
import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.DocumentException; impo ...
- java 快速排序 递归_Java递归快速入门
java 快速排序 递归 The function calls itself until someone stops it. 该函数将自行调用,直到有人停止它为止. Recursion can fee ...
- java中的递归算法_java递归实现
二话不说,先上代码 Java代码 publicclassTestRecursion{ //递归方法 publicstaticvoidfun(inti){ if(i >0){ i--; fun(i ...
- java 全盘搜索文件_java递归思想实现全盘搜索文件之高速版
在上一篇文章中(JAVA递归思想实现全盘搜索文件系统之进阶版)我们借助递归思想和多线程提升了全盘搜索文件系统的速度, 但是通过测试,好像还是有点慢,有没有办法再快一点呢?通过短暂的探索,我发现是可以再 ...
- java arraylist 遍历树_Java递归遍历树形结构
废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...
- java全排列算法 递归算法_Java递归实现全排列
最近整理之前自己学习Java时的一些代码笔记,可能都是一些比较基础的Java知识,在这里只是给需要的人参考一下. 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列 package inte ...
- java阶乘递归_java递归求阶乘,java实现递归阶乘详解
下面要给大家讲到的就是和java递归求阶乘相关的内容,那么你知道应该如何实现吗?一起通过下面的例子来详细的了解吧. 话不多说,就直接给大家上代码了!public class Factorial { p ...
- java斐波那契 递归_Java递归实现斐波那契数列
程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...
最新文章
- [转]Android有效解决加载大图片时内存溢出的问题
- str.length() 与 str.getBytes().length
- outguess秘钥加密--[BJDCTF 2nd]圣火昭昭-y1ng
- ITK:使用二进制阈值对图像阈值
- java string sscanf_倾情奉献——JAVA sscanf函数!!!
- idea 调试 js
- 小米为什么拆分红米? | 畅言
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
- Android框架之AsyncHttpClient
- 思科交换机命令大全 一
- 聊聊外贸企业自建网站注意事项
- Android调试办法之adb指令解锁手机锁屏
- 手把手教你如何将图片“嵌入”网页中
- 第十一周项目2--定义点类
- python中线条颜色_python – 在pandas中指定线条颜色
- golang中的并发竞争态
- 《推荐系统实践》笔记
- C#限制TextBox文本框输入格式
- smtp在线发送邮件_基于树莓派3B,利用爬虫、SMTP和发送邮件amp;amp;(爬取墨迹天气预报信息)...
- r语言平均值显著性检验_R语言:常用统计检验方法