자료 구조와 알고리즘

오름차순으로 늘어선 배열 a[0]~a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60에서 이진 탐색으로 38을 찾는다. 찾는 범위를 하한 lo = 0, 상한 hi = 9에서 시작하고, 가운데 위치를 (lo + hi) ÷ 2의 버림으로 한다. 38과 비교되는 원소의 값을 차례로 나열한 것은?

  1. A23, 38
  2. B31, 52, 45, 38
  3. C23, 45, 31, 38
정답과 해설 보기

정답: C. 23, 45, 31, 38

처음에는 (0 + 9) ÷ 2 = 4로 a[4] = 23과 비교하고, 38이 더 크므로 lo = 5로 합니다. 다음은 (5 + 9) ÷ 2 = 7로 a[7] = 45와 비교하고, 38이 더 작으므로 hi = 6으로 합니다. 다음은 (5 + 6) ÷ 2 = 5로 a[5] = 31과 비교하여 lo = 6으로 하고, 마지막으로 a[6] = 38에서 일치합니다. 비교는 4회로, 원소 수 10일 때의 최대 횟수 ⌊log₂ 10⌋ + 1 = 4에 해당합니다. 31, 52, 45, 38은 가운데를 올림으로 한 경우의 순서로, 문제에서 정한 방식과 다릅니다.

이 분야 연습하기 분야로 돌아가기

자료 구조와 알고리즘의 다른 문제

  1. 배열 5, 3, 8, 1, 4를 버블 정렬로 오름차순 정렬한다. 앞에서부터 이웃한 원소끼리 비교하여 왼쪽이 더 크면 교환하는 조작을 끝까지 1회 수행한(1패스) 후의 배열은?
  2. 배열 29, 10, 14, 37, 13을 선택 정렬(정렬되지 않은 부분에서 최솟값을 찾아, 정렬되지 않은 부분의 맨 앞과 교환한다)로 오름차순 정렬한다. 이 조작을 2회 수행한 후의 배열은?
  3. 원소 수 10인 배열을 삽입 정렬로 오름차순 정렬한다. 두 번째 이후의 원소를 차례로 꺼내어, 왼쪽 이웃부터 차례로 비교하며 꺼낸 값 이하인 원소가 발견되거나 맨 앞에 도달할 때까지 비교한다. 처음부터 오름차순으로 늘어서 있는 경우와 내림차순으로 늘어서 있는 경우의 비교 횟수의 조합은?
  4. 최악의 경우에도 시간 복잡도가 O(n log n)이고, 작업용 배열 등의 추가 기억 영역을 거의 사용하지 않고 정렬할 수 있는 정렬 방식은?
  5. (이름, 점수) 데이터 (A, 80), (B, 70), (C, 80), (D, 70)이 이 순서로 늘어서 있다. 점수의 오름차순으로 안정 정렬했을 때 이름의 순서는?