메뉴 건너뛰기

자유롭게 이야기를 적는 공간

*보는 사람을 고려하지 않았습니다.

배열이 1에서 N개가 있다면(이걸 a(i)라고 둡시다)
물론 이 배열은 오름차순으로 정렬 되어 있어야 합니다.

일단 L=1,R=N로 둡니다.

그다음 중간값인 (L+R)/2번째 값(S라고 생각하고)과 찾고자 하는 값 (이걸 D라고 둡시다.)
일단 S=D라면 보나마나 찾은 거죠.

만약 D<S라면
R=(L+R)/2-1로 둡니다.
만약 D>S라면
L=(L+R)/2+1로 둡니다.

그다음 이걸 반복하면 log N 만에 값을 찾을 수 있습니다.


N=10, D=4일 경우
1 2 3 4 5 6 7 8 9 10 이렇게 값이 있을 경우
(1+10)/2 = 5(내림)번째 값과 4를 비교합니다.
5번째 값은 5, 따라서 D<S입니다.
그러면 R은 4가 됩니다((1+10)/2-1)

이렇게 반복하다 보면 값을 찾을수 있습니다.
L>R인 경우는 값이 없는 경우이므로 이걸 체크하면 되겠죠.



조회 수 :
123
등록일 :
2005.08.27
08:43:45 (*.186.)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=free&document_srl=109184

포와로

2008.03.21
06:29:13
(*.119.125.31)
*보는 사람을 고려하지 않았습니다.


우성호

2008.03.21
06:29:13
(*.146.136.12)
*보는 사람을 고려하지 않았습니다.

케르메스

2008.03.21
06:29:13
(*.186.20.215)
그래도 알아들을수는 있겠는데
List of Articles
공지 (대피소) 혼돈과 어둠의 디스코드
노루발
103   2023-09-05 2023-09-05 16:05
공지 글 작성을 위해서는 회원 가입이 필요합니다.
노루발
4666   2016-02-22 2021-07-06 09:43