1/*2* 二分法查詢演算法是基於排序的基礎之上(類庫中好像有)
3* 利用二分法對陣列元素程序查詢111(下標為0), 222, 333, 444, 555, 666, 777, 888
4* 查詢原理
5* 找666這個元素的下標,此元素下標是5.
6* 陣列元素的下標為0——7
7* 通過二分法查詢(0+7)/2-->中間元素下標:3
8* 拿著這個元素和目標元素對比:
9* 中間元素是:arr[3]-->444
10* 444 < 666
11* 被查詢的元素666在目前中間元素444的右邊。
12* 所以開始元素的下標從0變成3 + 1 = 4
13* 再重新計算乙個中間元素的下標:
14* 開始下標是:4 + 1 = 5
15* 結束下標是:7
16* (5 + 7)/ 2 --> 6
17* 中間元素是:arr[6]-->777
18* 777 > 666
19*/
20public
class
erfen ;
23int index = erfen(arr, 666);
24 system.out.println(index == -1 ? "這個數不存在!" : "這個數的下標為:" +index);25}
2627
private
static
int erfen(int arr, int
i) else
if (arr[mid] 42return -1;43}
4445 }
二分法查詢
前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...
二分法查詢
演算法 當資料量很大適宜採用該方法。採用二分法查詢時,資料需是排好序的。主要思想是 設查詢的陣列區間為data start,end 1 確定該期間的中間位置pos將查詢的值m與data pos 比較。若相等,查詢成功返回此位置 否則確定新的查詢區域,繼續二分查詢。區域確定如下 data pos m ...
二分法查詢
二分法查詢 對有序元素集合的查詢,又叫折半查詢。思路 假設公升序 將查詢元素與集合中間元素比較,相等則返回 若查詢元素小於集合中間元素,則在集合左半部分進行二分查詢 若查詢元素大於集合中間元素,則在集合右半部分進行二分查詢 首先判斷要查詢的範圍正確性,如果查詢開始位置大於結束位置則返回未找到 sf....