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 코스로 돌아가기

1:1 정원제 · 상시 모집

정렬, 시간복잡도를 손으로 체감하며 다시 배우세요

당신에게 맞는 커리큘럼은 1:1 상담에서부터 시작됩니다.