二分法經典例題

2021-09-14 00:06:27 字數 1094 閱讀 7367

三個例題語句大致相同,但是注意判斷語句中的符號有差異,請讀者慢慢體會.

(一)(二)(三)二分全部使用的是左閉右閉區間

(一)運用範圍:查詢是否存在n元素

#include int main();

int n;

scanf("%d",&n);

int mid;

int left=0;

int right=4;

while(left<=right)else

} }return 0;

}

(二)運用範圍:返回第乙個大於等於n的位置

#include int main();

int n;

scanf("%d",&n);

int mid;

int left=0;

int right=10; //特別注意:這裡的上界為10

while(left=n)else

} return left;

}

(三)運用範圍:返回第乙個大於n的位置

#include int main();

int n;

scanf("%d",&n);

int mid;

int left=0;

int right=10;//特別注意:這裡的上界為10

while(leftn)else

} return left;

}

這裡重點說明(二)(三)為什麼right(上邊界)為10:

這是因為二分的出始區間必須覆蓋到所有可能的結果,因此返回滿足條件的位置時,可能不在原陣列下標中。

例如:5個元素

查詢數字8,因此返回的下標數為5。這裡便是上述問題的原因,因此這個方法是假設序列中存在n

所以(二)(三)無法判斷是否存在此元素,若想解決此缺陷,增加邊界條件做出判斷即可。

二分法的樣例 題解

題目描述 給定n個整數,m個問題 對於每個問題,你需要回答數字a是否在n個數字裡出現過 輸入 第一行是兩個整數n和m 0 n m 100000 接下來的一行,共有n個整數 接下來的m行,每行有1個整數a 輸出 共m行,對於每個詢問,若a出現過,則輸出yes 否則 輸出no 樣例輸入 5 21 2 3...

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