본문 바로가기
Study/Algorithm_정보처리기사

[정보처리기사][알고리즘][자료구조] 이분검색 - 1차원배열

by 푸민 2015. 8. 21.
반응형



Q. 키보드로 입력 받은 값이 DATA 배열의 몇 번째에 기억되어 있는지 알아보기 위해 출력하는 순서도를 작성하시오. 단, DATA(10) 배역에는 10개의 숫자가 들어있으며, 찾는 자료가 없을 경우 자료와 함께 Not Found를 출력하고 끝낸다.

1. 입력받은 숫자가 저장될 DATA 배열을 선언한다. 정렬된 숫자가 저장되어 있다고 가정한다.

 

2. 찾을 숫자를 입력받는다.

 

3. 검색 범위의 시작 위치는 1이므로 L을 1로 초기화한다.

 

4. 검색 범위의 마지막 위치는 10이므로 H를 10으로 초기화한다. 10개의 배열요소를 사용하므로 마지막 위치는 10이다.

 

5. L이 H보다 작거나 같으면 계산을 수행하기 위해 YES로 가고 아니면 시작 위치가 마지막 위치보다 커진것이므로 NO로 간다.

 

1) No경우, 입력 받은 값과 NOT FOUND를 출력하고 끝낸다.

 

2) Yes일 경우, 찾을 범위의 중간위치를 계산한다.

 

3) 찾을 값과 중간 위치의 값을 비교하여 원하는 값을 찾았는지 판단한다.

 

A. Yes일 경우, 입력받은 수 J, 찾은 위치 M을 출력하고 끝낸다.

 

B. No일 경우, 찾지 못한 경우이다. 이제 찾을 값이 중간 위치의 값조다 큰지 작은지를 비교한다.

 

A) 찾을 값이 더 크거나 같다면, 검색 범위의 시작 위치를 중간위치보다 1칸 이후로 변경한다. 그리고 5번으로 간다.

 

B) 찾을 값이 더 작다면, 검색 범위의 마지막 위치를 중간 위치보다 1칸 이전으로 변경한다.

 

해당 글은 제가 만든 알고리즘 어플기준으로 작성하였습니다.

더 많은 정보는 알고리즘 어플을 이용해주세요.

반응형

댓글