java实现二分法递归_Java递归实现二分法
/*
遞歸實(shí)現(xiàn)二分法的進(jìn)化
*/
import?java.util.Scanner;
public?class?RecursionNext2{
public?static?void?main(String[]args)
{
//接收一個(gè)要尋找的數(shù)
System.out.println("請(qǐng)輸入:");
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);
}
//遞歸實(shí)現(xiàn)二分法
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("請(qǐng)輸入你要找的數(shù)字");
int?num=sc.nextInt();
//調(diào)用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;
//判斷數(shù)組是否為空
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;
}
}
遞歸實(shí)際就是實(shí)現(xiàn)了循環(huán)的作用!
二分法首先你要確定你所穿的數(shù)組不是空,并且使數(shù)組升序排列
//判斷數(shù)組是否為空
if(a==null)
{
return?-1;
}
第二限制循環(huán)的條件
保證front<=end,只有在這個(gè)前提下找的的位置才保證是在數(shù)組內(nèi)部尋找
然后再去判斷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;
}
}
總結(jié)
以上是生活随笔為你收集整理的java实现二分法递归_Java递归实现二分法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 统一编码_java GBK U
- 下一篇: java七大_Java 7七大新功能