바이너리 서치하다가 위그림 같은 상황이 되었다고 하자

내가 지금 찾으려는 값보다 작으면 현재의 mid는 답이 아니라는 소리고

 left가 mid로 바뀌게 될 것이다

그리고 새로운 미드를 (left+right)/2;로 한다면

새로운 mid는 이전의 mid와 같은 값을 갖게되고, 그 이후로도 계속 left와 mid는 

같은값을 갖게되어 무한루프에 빠지게 된다

그래서 이런경우에는 left를 mid로 바꿔준후


if( left + 1 == right) mid = (left + right + 1)/2; else mid = (left + right)/2;


이래 해주면 새로운 mid는 이전의 mid가 아닌 right로 새로운 값을 갖게 된다

그리고 그 mid가 내가 찾는 답이 될것이다

'알고리즘' 카테고리의 다른 글

꿈틀꿈틀  (0) 2013.07.30
에라토스테네스의 체  (0) 2013.07.30
dp를 recursive로, iterative로  (0) 2013.07.18
LCS(longest common subsequence)  (0) 2013.07.16
dfs, bfs  (0) 2013.07.14
Posted by bogus919
,