亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java二分法查找的實現方法

發布時間:2020-04-15 10:09:35 來源:億速云 閱讀:164 作者:小新 欄目:編程語言

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

java二分法查找的實現方法

java二分法查找怎么實現

BinarySearch

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

我們可以這樣去想,二分法查找很類似與我們平時玩的猜價格游戲,當你報出一個價格時裁判會告訴你價格相對于真實值的高低,倘若是低了那我們一定會再說出一個略高的價格,反之亦然。

()

在二分法查找時要求傳入的數據必須已經有序,假設現在為升序,然后每次將所尋找的值與中間值(數組左邊界+(右邊界-左邊界)/2)作比較,大了則去尋找中間值左側數據,小則尋找中間值右側數據。

public class BinarySearch {
//進行二分法查找的前提是數組已經有序!
	public static int rank(int key,int nums[])
	{
		//查找范圍的上下界
		int low=0;
		int high=nums.length-1;
		//未查找到的返回值
		int notFind=-1;
		while(low<=high)
		{
			//二分中點=數組左邊界+(右邊界-左邊界)/2
			//整數類型默認取下整
			int mid=low+(high-low)/2;
			//中間值是如果大于key
			if(nums[mid]>key)
			{
				//證明key在[low,mid-1]這個區間
				//因為num[mid]已經判斷過了所以下界要減一
				high=mid-1;
			}else if(nums[mid]<key)
			{
				//證明key在[mid+1,high]這個區間
				//同樣判斷過mid對應的值要從mid+1往后判斷
				low=mid+1;
			}
			else
			{
				//查找成功
				return mid;
			}
		}
		//未成功
		return notFind;
	}
	public static void main(String[] args) {
		System.out.println("請輸入數據數量:");
		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("所查找的數據存在:"+nums[answer]);
		}
		else
		{
			System.out.println("您所查找的數據不存在");
		}
	}
 
}

關于java二分法查找的實現方法就分享到這里了,當然并不止以上和大家分析的辦法,不過小編可以保證其準確性是絕對沒問題的。希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖州市| 应城市| 房山区| 万盛区| 新绛县| 磴口县| 孝义市| 平湖市| 介休市| 图们市| 娄底市| 辰溪县| 重庆市| 四川省| 泰顺县| 禄丰县| 霍邱县| 西城区| 白玉县| 繁峙县| 台山市| 大名县| 平利县| 密山市| 扶绥县| 江源县| 静安区| 铜陵市| 石首市| 郸城县| 芒康县| 阿合奇县| 铜山县| 金门县| 万州区| 苍溪县| 平远县| 兰考县| 灌南县| 肃南| 徐汇区|