java二分法查找的實(shí)現(xiàn)方法

這篇文章主要為大家詳細(xì)介紹了java二分法查找的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有蘭州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

java二分法查找的實(shí)現(xiàn)方法

java二分法查找怎么實(shí)現(xiàn)

BinarySearch

二分法查找,顧名思義就是要將數(shù)據(jù)每次都分成兩份然后再去找到你想要的數(shù)據(jù),

我們可以這樣去想,二分法查找很類似與我們平時(shí)玩的猜價(jià)格游戲,當(dāng)你報(bào)出一個(gè)價(jià)格時(shí)裁判會(huì)告訴你價(jià)格相對(duì)于真實(shí)值的高低,倘若是低了那我們一定會(huì)再說(shuō)出一個(gè)略高的價(jià)格,反之亦然。

()

在二分法查找時(shí)要求傳入的數(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)
		{
			//二分中點(diǎn)=數(shù)組左邊界+(右邊界-左邊界)/2
			//整數(shù)類型默認(rèn)取下整
			int mid=low+(high-low)/2;
			//中間值是如果大于key
			if(nums[mid]>key)
			{
				//證明key在[low,mid-1]這個(gè)區(qū)間
				//因?yàn)閚um[mid]已經(jīng)判斷過(guò)了所以下界要減一
				high=mid-1;
			}else if(nums[mid]<key)
			{
				//證明key在[mid+1,high]這個(gè)區(qū)間
				//同樣判斷過(guò)mid對(duì)應(yīng)的值要從mid+1往后判斷
				low=mid+1;
			}
			else
			{
				//查找成功
				return mid;
			}
		}
		//未成功
		return notFind;
	}
	public static void main(String[] args) {
		System.out.println("請(qǐng)輸入數(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("請(qǐng)輸入想要查找的值");
		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二分法查找的實(shí)現(xiàn)方法就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過(guò)小編可以保證其準(zhǔn)確性是絕對(duì)沒(méi)問(wèn)題的。希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

分享標(biāo)題:java二分法查找的實(shí)現(xiàn)方法
文章URL:http://www.muchs.cn/article44/phdohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、建站公司響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化營(yíng)銷型網(wǎng)站建設(shè)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司