二分法查詢適用於資料量較大時,但是資料需要先排好順序。
首先,從陣列的中間元素開始搜尋,如果該元素正好是目標元素,則搜尋過程結束,否則執行下一步。
如果目標元素大於/小於中間元素,則在陣列大於/小於中間元素的那一半區域查詢,然後重複步驟1的操作。
如果某一步陣列為空,則表示找不到目標元素。
時間複雜度為:o(log2n)。
當所給陣列為無序陣列時,想用二分法查詢某元素則需要先進行排序,在進行二分法查詢。
#include#includeint binary_search(int arr, int k, int sz)
return -1;
}int main()
; int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, key, sz);
if (ret == -1)
printf("找不到\n");
else
printf("找到了:%d\n", ret + 1);
二分法查詢有序陣列
package array public class testbinarysearch 指定查詢的元素 int num 12 用二分法查詢,返回索引 int start 0 int end arr.length 1 end的設定應該為陣列最後一位 int index 1 用於標誌是否查詢到指定元素 ...
查詢有序陣列元素 二分法
查詢的方法多種多樣,今天提到的就是對於乙個有序陣列而言最方便最高效率的方法 二分法,也叫折半查詢。具體 如下 二分法,也叫折半查詢 include include intb search int a,int left,int right,int k else if a mid k else retu...
二分法查詢順序陣列
程式大致內容為指定乙個順序的陣列,然後輸入想要查詢的key數字,在給定陣列用二分發查詢,找到返回位置,找不到返回 1 程式如下 include include includeint binary search int arr,int key,int sz else return 1 int main...