三個例題語句大致相同,但是注意判斷語句中的符號有差異,請讀者慢慢體會.
(一)(二)(三)二分全部使用的是左閉右閉區間
(一)運用範圍:查詢是否存在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 ...