這篇文章主要為大家詳細(xì)介紹了java二分法查找的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有蘭州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

java二分法查找怎么實現(xiàn)
BinarySearch
二分法查找,顧名思義就是要將數(shù)據(jù)每次都分成兩份然后再去找到你想要的數(shù)據(jù),
我們可以這樣去想,二分法查找很類似與我們平時玩的猜價格游戲,當(dāng)你報出一個價格時裁判會告訴你價格相對于真實值的高低,倘若是低了那我們一定會再說出一個略高的價格,反之亦然。
()
在二分法查找時要求傳入的數(shù)據(jù)必須已經(jīng)有序,假設(shè)現(xiàn)在為升序,然后每次將所尋找的值與中間值(數(shù)組左邊界+(右邊界-左邊界)/2)作比較,大了則去尋找中間值左側(cè)數(shù)據(jù),小則尋找中間值右側(cè)數(shù)據(jù)。
public class BinarySearch {
//進(jìn)行二分法查找的前提是數(shù)組已經(jīng)有序!
public static int rank(int key,int nums[])
{
//查找范圍的上下界
int low=0;
int high=nums.length-1;
//未查找到的返回值
int notFind=-1;
while(low<=high)
{
//二分中點=數(shù)組左邊界+(右邊界-左邊界)/2
//整數(shù)類型默認(rèn)取下整
int mid=low+(high-low)/2;
//中間值是如果大于key
if(nums[mid]>key)
{
//證明key在[low,mid-1]這個區(qū)間
//因為num[mid]已經(jīng)判斷過了所以下界要減一
high=mid-1;
}else if(nums[mid]<key)
{
//證明key在[mid+1,high]這個區(qū)間
//同樣判斷過mid對應(yīng)的值要從mid+1往后判斷
low=mid+1;
}
else
{
//查找成功
return mid;
}
}
//未成功
return notFind;
}
public static void main(String[] args) {
System.out.println("請輸入數(shù)據(jù)數(shù)量:");
Scanner scanner=new Scanner(System.in);
int amount=scanner.nextInt();
int num;
int nums[]=new int[amount];
int i=0;
while(i<amount)
{
nums[i]=scanner.nextInt();
i++;
}
Arrays.sort(nums);
System.out.println("請輸入想要查找的值");
int key=scanner.nextInt();
int answer=rank(key,nums);
if(answer!=-1)
{
System.out.println("所查找的數(shù)據(jù)存在:"+nums[answer]);
}
else
{
System.out.println("您所查找的數(shù)據(jù)不存在");
}
}
}關(guān)于java二分法查找的實現(xiàn)方法就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過小編可以保證其準(zhǔn)確性是絕對沒問題的。希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
分享標(biāo)題:java二分法查找的實現(xiàn)方法
文章URL:http://chinadenli.net/article44/phdohe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、建站公司、響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化、營銷型網(wǎng)站建設(shè)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)