關於二分法查詢

2021-06-27 06:57:31 字數 372 閱讀 6108

今天在《c++ primer》第五版page101上看見乙個問題:

在二分法搜尋中為什麼用的是 mid = beg + ( end - beg ) /2 而非 mid = ( beg + end ) / 2  ?

從我原先的思維,去兩個數的中間值確實是兩數相加除以二,所以想了好一會兒也沒想明白,無奈之下只好求助google了……

1. beg+end有溢位風險,而end-beg則沒有;

2.從分步邏輯來看,beg + ( end - beg ) /2 表示的是」基址 + 增量/2「,而 beg + end 沒有明確的意義

3.對指標和迭代器通用性更強

目前了解到的就是以上幾種原因了,原來要考慮的東西有這麼多,看來學習的路途任重而道遠啊……

關於二分法查詢

與一般的查詢方式相比二分法查詢則顯得高效快速,即只要較少的查詢次數就可以完成快速地搜尋。在進行二分法查詢前需要先對資料進行排序,定義left,right兩個變數,然後在這組資料中找到mid right left right 2,然後將待查詢元素與mid所指元素進行比較,如果相等則返回,如果查詢元素大...

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