二分法查詢的條件設定

2021-07-30 18:36:03 字數 681 閱讀 2656

#include 

int search(int ,int);

int main(int argc, char const *argv)

int search(int seq,int des)

return

0;}

其中關鍵的三個條件設定是left <= right、right = middle -1和left = middle +1,後兩個較容易理解,就是將查詢邊界向左/右移動乙個單位。但是第乙個條件值得思考,為什麼是<=而不是<。下面給出乙個具體的例子:

假設查詢到最後一步,範圍鎖定在seq[2] = 3, seq[3] = 4之間。此時有三種情況:1.目標數為3;2.目標數為4;3.目標數為3.5。下面依次分析:

1.當目標數為3時,下一步middle = 2,找到;

2.當目標數為4時,下一步middle = 2,4 > 3,left = 3。這時候如果設定的是left < right,那麼就退出迴圈了,返回沒找到,明顯錯誤,所以應該設定為left <= right;

3.當目標數為3.5時(型別要改為float),下一步middle = 2,3 < 3.5,left = right = 3,下一步middle = 3 < 3.5,left = 4,退出迴圈,表示沒找到。

綜上所述,條件應該設定為 left <= right.

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 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...