자료 구조와 알고리즘

배열 29, 10, 14, 37, 13을 선택 정렬(정렬되지 않은 부분에서 최솟값을 찾아, 정렬되지 않은 부분의 맨 앞과 교환한다)로 오름차순 정렬한다. 이 조작을 2회 수행한 후의 배열은?

  1. A10, 13, 14, 37, 29
  2. B10, 14, 29, 37, 13
  3. C10, 14, 13, 29, 37
정답과 해설 보기

정답: A. 10, 13, 14, 37, 29

1회째는 전체의 최솟값 10을 맨 앞의 29와 교환하여 10, 29, 14, 37, 13이 됩니다. 2회째는 두 번째 이후의 최솟값 13을 두 번째의 29와 교환하여 10, 13, 14, 37, 29가 됩니다. 선택 정렬의 비교는 항상 n(n−1)/2회이지만, 교환은 1회의 조작에 최대 1회이므로 쓰기 비용이 큰 데이터에서 유리한 경우가 있습니다. 10, 14, 29, 37, 13은 삽입 정렬로 원소 2개를 끼워 넣은 후, 10, 14, 13, 29, 37은 버블 정렬을 2패스 수행한 후의 배열입니다.

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

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

  1. 원소 수 10인 배열을 삽입 정렬로 오름차순 정렬한다. 두 번째 이후의 원소를 차례로 꺼내어, 왼쪽 이웃부터 차례로 비교하며 꺼낸 값 이하인 원소가 발견되거나 맨 앞에 도달할 때까지 비교한다. 처음부터 오름차순으로 늘어서 있는 경우와 내림차순으로 늘어서 있는 경우의 비교 횟수의 조합은?
  2. 최악의 경우에도 시간 복잡도가 O(n log n)이고, 작업용 배열 등의 추가 기억 영역을 거의 사용하지 않고 정렬할 수 있는 정렬 방식은?
  3. (이름, 점수) 데이터 (A, 80), (B, 70), (C, 80), (D, 70)이 이 순서로 늘어서 있다. 점수의 오름차순으로 안정 정렬했을 때 이름의 순서는?
  4. 퀵 정렬의 시간 복잡도가 O(n²)이 되는 전형적인 경우는?
  5. 병합 정렬에서 오름차순으로 정렬된 두 열 1, 4, 7, 9와 2, 3, 8, 10을, 맨 앞끼리 비교하여 작은 쪽을 출력하는 것을 반복하여 하나의 열로 합친다(병합한다). 한쪽 열이 비면 나머지는 비교하지 않고 그대로 출력한다. 비교 횟수는 몇 회인가?