Java递归实现二分法
生活随笔
收集整理的這篇文章主要介紹了
Java递归实现二分法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*
遞歸實現(xiàn)二分法的進(jìn)化?*/import?java.util.Scanner;public?class?RecursionNext2{public?static?void?main(String[]args){//接收一個要尋找的數(shù)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);}//遞歸實現(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,mid+1,end,num);}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("請輸入你要找的數(shù)字");int?num=sc.nextInt();//調(diào)用searchArray()尋找numint?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){front=mid+1;}else?if(a[mid]>num){end=mid-1;}}return?-1;}}遞歸實際就是實現(xiàn)了循環(huán)的作用!
二分法首先你要確定你所穿的數(shù)組不是空,并且使數(shù)組升序排列
?//判斷數(shù)組是否為空if(a==null){return?-1;}第二限制循環(huán)的條件
保證front<=end,只有在這個前提下找的的位置才保證是在數(shù)組內(nèi)部尋找
然后再去判斷a[mid]是否等于num,若a[mid]<num說明num在數(shù)組的mid位置到end之間,所以將front=mid+1(因為你已經(jīng)判斷過mid位置上的數(shù)),當(dāng)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){front=mid+1;}else?if(a[mid]>num){end=mid-1;}}轉(zhuǎn)載于:https://blog.51cto.com/11900208/1866008
總結(jié)
以上是生活随笔為你收集整理的Java递归实现二分法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux命令:ps,netstat,t
- 下一篇: java美元兑换,(Java实现) 美元