학습 자료

선택 정렬 자세히 알아보기

1. 반복문 설정

두 개의 중첩된 반복문을 사용합니다. 외부 반복문은 배열을 통과하는 횟수를 결정하고, 내부 반복문은 최소값을 찾기 위해 배열의 요소를 비교합니다.

반복문 설정
for i in range(n): for j in range(i + 1, n):

2. 최소값 찾기 및 교환

내부 반복문에서, 최소값을 찾아 현재 위치의 값과 교환합니다.

최소값 찾기 및 교환
if arr[j] < arr[min_index]: min_index = j # 최소값의 인덱스 저장 arr[i], arr[min_index] = arr[min_index], arr[i] # 최소값과 현재 위치의 값 교환

선택 정렬 시간 복잡도

  1. 최악, 최선, 평균 시간 복잡도 (Worst, Best, and Average-Case Time Complexity): 모두 O(n^2)

    • 선택 정렬은 배열의 각 위치에 대해 나머지 전체 배열을 탐색하여 가장 작은(또는 가장 큰) 요소를 찾습니다. 이 과정은 배열의 크기가 n일 때, 첫 번째 요소에 대해 n-1번, 두 번째 요소에 대해 n-2번 등 총 ((n-1) + (n-2) + ... + 1)번, 즉 n(n-1)/2 번의 비교를 필요로 합니다.

    n(n-1)/2를 빅오 표기법으로 표기하면, 시간복잡도는 O(n^2)가 됩니다.

    • 선택 정렬의 시간 복잡도는 입력 데이터의 정렬 상태에 관계없이 항상 일정합니다. 즉, 이미 정렬된 배열이든, 역순으로 정렬된 배열이든, 무작위로 배치된 배열이든 시간 복잡도는 변하지 않습니다.

학습 자료

AI 튜터

도움말