與一般的查詢方式相比二分法查詢則顯得高效快速,即只要較少的查詢次數就可以完成快速地搜尋。
在進行二分法查詢前需要先對資料進行排序,定義left,right兩個變數,然後在這組資料中找到mid=right+(left-right)/2,然後將待查詢元素與mid所指元素進行比較,如果相等則返回,如果查詢元素大於以mid所代表數字為下標的元素,則將left向右移動即left=mid+1;
如果查詢元素小於mid所指元素,則將left向左移動即right=mid-1。重複以上過程直到left>right,當查到left>right時,還沒找出則表明此元素不存在。下面為二分法查詢程式:
int binary_search(int arr, int key, int sz)
else if (arr[mid]>key)
else
}return -1;
}int main()
; int key = 10;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, key,10);
if (ret == -1)
else
system("pause");
return 0;
關於二分法查詢
今天在 c primer 第五版page101上看見乙個問題 在二分法搜尋中為什麼用的是 mid beg end beg 2 而非 mid beg end 2 從我原先的思維,去兩個數的中間值確實是兩數相加除以二,所以想了好一會兒也沒想明白,無奈之下只好求助google了 1.beg end有溢位風...
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...