查詢的方法多種多樣,今天提到的就是對於乙個有序陣列而言最方便最高效率的方法——二分法,也叫折半查詢。
具體**如下:
二分法,也叫折半查詢
#include
#include
intb_search
(int a,
int left,
int right,
int k)
else
if(a[mid]
< k)
else
return
(mid);}
return(-
1);}
intmain()
;int k =6;
int left =0;
int right =
(sizeof
(a)/
sizeof
(a[0])
)-1;
i =b_search
( a, left, right, k);if
(-1== i)
else
system
("pause");
return0;
}
注意點:
1.傳引數時要傳陣列左右邊界指標過去,這樣可以靈活的控制查詢區域,切記不可以在函式的內部求陣列的長度。
2.在計算陣列長度時用sizeof(a) / sizeof(a[0]),也可以設為巨集定義。
二分法查詢有序陣列
package array public class testbinarysearch 指定查詢的元素 int num 12 用二分法查詢,返回索引 int start 0 int end arr.length 1 end的設定應該為陣列最後一位 int index 1 用於標誌是否查詢到指定元素 ...
有序陣列中二分法查詢
二分法查詢適用於資料量較大時,但是資料需要先排好順序。首先,從陣列的中間元素開始搜尋,如果該元素正好是目標元素,則搜尋過程結束,否則執行下一步。如果目標元素大於 小於中間元素,則在陣列大於 小於中間元素的那一半區域查詢,然後重複步驟1的操作。如果某一步陣列為空,則表示找不到目標元素。時間複雜度為 o...
二分法查詢順序陣列
程式大致內容為指定乙個順序的陣列,然後輸入想要查詢的key數字,在給定陣列用二分發查詢,找到返回位置,找不到返回 1 程式如下 include include includeint binary search int arr,int key,int sz else return 1 int main...