기초 정렬 선택 기준

같은 O(N^2)라도 입력 모양에 따라 선택 기준이 달라진다

기초 정렬은 속도 경쟁용이 아니라 비교 방향, 경계, 안정성, 쓰기 횟수를 눈으로 검증하기 위한 도구입니다. 먼저 입력 분포와 요구 조건을 확인한 뒤 알고리즘을 고릅니다.

1

거의 정렬된 입력

1 2 3 5 4

삽입 정렬이 유리합니다. 앞쪽 정렬 구간 불변식을 유지하면서 어긋난 값만 왼쪽으로 이동시키면 됩니다.

최선 O(N)
2

인접 교환을 관찰

3 2 1

버블 정렬은 한 패스마다 큰 값이 끝으로 확정됩니다. 조기 종료 플래그가 있으면 이미 정렬된 입력에서 빠르게 멈춥니다.

swap 타이밍 확인
3

쓰기 횟수 예측

8 4 6 2

선택 정렬은 비교는 많지만 각 패스에서 최대 한 번만 교환합니다. 안정성이 필요하면 이 특성이 오히려 위험할 수 있습니다.

비안정 정렬

[5, 3, 4] 삽입 정렬 경계 추적

오답 조건 `j > 0`이면 0번째 원소 비교가 빠져 첫 칸까지 밀지 못합니다.
교정 조건 `j >= 0`으로 비교하고, 종료 뒤 `arr[j + 1] = key`를 보장합니다.
검증 결과 삽입/버블/선택 정렬 모두 `[3, 4, 5]`를 반환해야 합니다.