본문 바로가기
데이터 베이스정보처리기사(구) · 2003년03월16일 · 11/100

11.아래 보기의 자료에서 이진탐색(binary search)을 적용할 경우 E를 찾기 위한 비교횟수는?

정보처리기사(구) 11번 문제 이미지
1
3
2
4정답
3
5
4
6

해설

mid = 0, START = 0, FINISH= N; while(START < FINISH) { mid = START + ((FINISH - START) / 2); if(Array[mid] < value) START = mid + 1; else FINISH = mid; } if((begin < N) && (Array[begin] == value)) return Array[begin]; return 0; 전체 길이 / 2 자리를 기준으로 좌우로 나눈뒤 중간값을 찾는 값과 비교한다 (소수점 자리는 버린다.) 중간값 보다 찾는값이 클경우 우측기준 그 외에는 좌측을 기준으로 계산한다. (클경우 START = MID + 1 // 작거나 같을경우 FINISH = MID) 이 작업을 중간 값 과 찾는값이 같을때 까지 반복한다 ex) A B C D E F G H I J K L M N O ->A B C D E F /G/ H I J K L M N O : 15개 - > 7번째 = G 와 E 비교 - > 찾는값이 크지 않음 ->A B /C/ D E F G : 7개 - > 3번째 = D 와 E 비교 - > 찾는값이 큼 ->D /E/ F G : 4개 - > 2번째 = E 와 E 비교 - > 찾는값이 크지 않음 ->/D/ E : 2개 - > 1번째 = E 와 D 비교 -> 찾는값이 큼 ->E :: CLEAR

이 시험을 직접 풀어보세요

실전과 동일한 CBT 환경에서 시간 제한 연습

회원가입 없이 CBT 풀기