선택 정렬 (Selection Sort)
배열에서 가장 작은(혹은 가장 큰) 요소를 반복적으로 찾아 맨 앞의 요소와 교체하는 방식으로 정렬을 수행하는 직관적인 제자리 정렬 알고리즘입니다.
01선택 정렬 (Selection Sort)
알고리즘 작동 원리 탐색선택 정렬을 시작합니다. 아직 정리되지 않은 구간에서 가장 작은 값을 찾아 맨 앞으로 보내는 일을 반복합니다.
첫 자리에 놓을 값을 고릅니다. 일단 맨 앞의 45를 후보로 두고 오른쪽 전체를 훑습니다.
훑는 동안 12가, 다시 10이 후보를 갈아치웁니다. 전체에서 가장 작은 값은 맨 끝의 10입니다.
찾은 10을 첫 자리로 보냅니다. 그 자리에 있던 45는 10이 있던 끝자리로 갑니다.
다음은 두 번째 자리입니다. 남은 값 중 가장 작은 12가 이미 그 자리에 있어 옮길 것이 없습니다.
세 번째 자리를 채울 차례입니다. 남은 89·34·67·23·56·45 중에서 가장 작은 값을 찾습니다.
가장 작은 값은 23입니다. 지금 그 자리를 차지한 89와 맞바꿀 준비를 합니다.
23을 세 번째 자리로 보냅니다. 89는 23이 있던 자리로 물러납니다.
네 번째 자리는 34입니다. 남은 값 중 가장 작아 이번에도 교환은 없습니다.
다섯 번째 자리에는 남은 값 중 가장 작은 45가 옵니다. 그 자리의 67과 맞바꿉니다.
왼쪽 다섯 자리가 확정됐습니다. 한 자리를 채울 때마다 정렬된 구간이 한 칸씩 자랍니다.
여섯 번째 자리에는 56이 옵니다. 그 자리를 차지한 89와 맞바꿉니다.
남은 89와 67의 순서만 바로잡으면 끝입니다. 둘을 맞바꿉니다.
선택 정렬이 끝났습니다. 교환은 자리마다 한 번뿐이지만, 최솟값을 찾느라 매번 남은 구간 전체를 훑습니다.
02 쉽게 이해하기
For Everyone남은 구간에서 가장 작은 값을 찾아 맨 앞과 바꿉니다. 교환 횟수가 n-1 로 적습니다.
매번 최솟값을 찾아 앞에서부터 채웁니다.
교환 횟수는 적지만 비교는 항상 O(n²)이에요.
- –교환 비용이 클 때
- –정렬 개념 학습
03 파이썬 구현 코드
선택 정렬 (Selection Sort)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.
04 자주 묻는 질문
FAQ선택 정렬 (Selection Sort)란 무엇인가요?+
배열에서 가장 작은(혹은 가장 큰) 요소를 반복적으로 찾아 맨 앞의 요소와 교체하는 방식으로 정렬을 수행하는 직관적인 제자리 정렬 알고리즘입니다.
선택 정렬 (Selection Sort)의 시간복잡도는 어떻게 되나요?+
선택 정렬 (Selection Sort)의 시간복잡도는 O(n²) 입니다. 시각화의 단계별 진행을 따라가며 왜 이런 복잡도가 나오는지 직접 확인할 수 있습니다.
선택 정렬 (Selection Sort)은(는) 어디에 사용하나요?+
교환 비용이 클 때, 정렬 개념 학습.
선택 정렬 (Selection Sort)를 쉽게 비유하면?+
남은 구간에서 가장 작은 값을 찾아 맨 앞과 바꿉니다. 교환 횟수가 n-1 로 적습니다.
