寫乙個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 進行查詢,當然我...