日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java递归实现二分法

發(fā)布時間:2025/1/21 java 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。