JAVA基礎_二分查找

JAVA基礎_二分查找

二分查找是用來幹什麼呢?如果我們需要在一個數組中找到某一個值,那麼這裏就可以用到二分查找,當數組內容越大效率越高,在這就涉及到二分查找的思路了。那麼思路是啥?在一個順序排列的數組中,我們找到中間值,讓它和查找值去比較,這理由三種情況,大於(中間>查找),那麼中間值的後邊就可以排除在比較中了;同理,小於也可以排除一半;最特殊的就是相等了,直接輸出索引就行了。以上就是思路,當然這只是一次的查找,後續利用循環直到找到查找數。(其實在java中已經有打包好了二分查找,可以直接調用)當我們自己去寫二分查找時,需要定義三個數來輔助,第一個爲最大值,第二個爲最小值,第三個爲中間值(最大加最小/2),再根據比較接過來更換值,直到出現查找值。

public static void main(String[] args){
	//定義一個要查找的值
	int a = 66;
	//定義一個數組
	int[]ssr={11,25,34,45,51,66,71,80,99};
	//調用java打包好的二分搜索方法完成查找
	int c =java.util.Arrays.binarySearch(ssr,a);
	System.out.println(c);
	//定義三個變量輔助if判斷完成查找
	int max = ssr.length-1;
	int min = 0;
	int half = (max+min)/2;
	//對查找進行循環,直到查找的需要的值,當最大值和最小值相等時就是索引相等時,這時已經無法再去比較,所以作爲終止條件
while (min<=max){
	//利用if   else判斷查找值的位置並輸出
	if (ssr[half]==a){
		System.out.println(half);
		break;
	}else if(ssr[half]<a){
		min = half+1;
		half = (min+max)/2;
	}else{  max=half-1;
		    half = (max+min)/2;
	}		
}
	System.out.println(half);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章