你真的會二分搜尋嗎

2021-10-04 18:04:42 字數 751 閱讀 7764

寫乙個check函式

判斷check(mid)函式為true時mid落到了左半邊還是右半邊

更新區間

比如圖中如果找10的左區間,那麼mid應該落在右半邊,不斷向左更新,直到找到左邊界

bool check_r(int mid, int x)

對應的二分模板為:

int l = 0, r = n-1;

while(l>1;

if(check_r(mid)) r = mid;

else l = mid+1;

}

如果找10的右區間,那麼mid應該落在左半邊,不斷向右更新,直到找到右邊界

bool check_l(int mid, int x)

對應的二分模板為:

int l = 0, r =n-1;

while(l>1; /*這裡加1是因為如果 l = r-1, 更新之後mid = l, 如果check()==true, 那麼區間仍然為[l,r] 會發生死迴圈*/

if(check_l(mid, x)) l = mid;

else r = mid-1;

}

你真的會二分查詢嗎?

看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 進行查詢,當然我...

你真的會二分查詢嗎?

引用請註明出處 看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 ...

你真的會二分查詢嗎?

看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 進行查詢,當然我...