Sel
SORTING
선택 정렬 (Selection Sort)
정렬되지 않은 구간에서 가장 작은 값을 찾아 맨 앞자리와 바꾸는 과정을 한 단계씩, 또는 자동 재생으로 직접 확인하세요. 비교 횟수는 배열 상태와 무관하게 항상 같지만, 교환 횟수는 크게 달라진다는 점을 눈으로 비교할 수 있습니다.
재생 버튼을 눌러 정렬을 시작하세요.
비교 0회 · 교환 0회
1 / 1
속도
대기
최솟값 후보
비교 중
확정 교환
정렬 완료
PSEUDOCODE
for i ← 0 to n-2 minIdx ← i for j ← i+1 to n-1 if array[j] < array[minIdx] minIdx ← j swap(array[i], array[minIdx])
어떻게 동작하나요
정렬되지 않은 구간(처음엔 배열 전체)에서 가장 작은 값을 찾아 그 구간의 첫 자리와 교환합니다. 이 과정을 반복할 때마다 정렬된 구간이 앞에서부터 한 칸씩 늘어납니다. 버블 정렬과 달리 정렬된 값이 뒤가 아니라 앞에서부터 쌓이고, 배열이 이미 정렬되어 있어도 남은 구간 전체를 훑어 최솟값을 찾아야 하므로 비교 횟수는 줄어들지 않는다는 점이 특징입니다 — 교환 횟수만 줄어듭니다.
시간·공간 복잡도
- 최선 (비교는 동일)
- O(n²)
- 평균
- O(n²)
- 최악
- O(n²)
- 공간 복잡도
- O(1)
- 안정 정렬
- 아니오 (Not stable)
"정렬됨" 프리셋으로 확인해보세요 — 비교 횟수(45회, n=10)는 그대로인데 교환 횟수만 0이 됩니다. 버블 정렬의 조기 종료와는 다른 종류의 "최선의 경우"입니다.
다른 정렬 알고리즘(버블·삽입·병합·퀵)도 이어서 시각화할 예정입니다 — Algorithm 코스로 돌아가기