關於二分法查詢

2021-07-30 06:04:59 字數 656 閱讀 6717

與一般的查詢方式相比二分法查詢則顯得高效快速,即只要較少的查詢次數就可以完成快速地搜尋。

在進行二分法查詢前需要先對資料進行排序,定義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 ...