작동 방식
버블 정렬은 인접한 두 수를 비교해서 정렬을 했습니다.
반면, 선택 정렬은 최소값을 선택해 맨 앞으로 옮겨주는 방법으로 정렬을 합니다.
2 5 3 1 4 7 6 을 선택정렬을 이용해 정렬해봅시다.
슬래시 앞쪽은 정렬이 완료된 상태이고, “” 안에 있는 숫자는 최소값으로 선택된 원소입니다.
1 |
|
이러한 과정을 거쳐 정렬이 됩니다.
또한, 잘 관찰해보면 뒤부터 정렬되는 버블정렬과 달리, 앞부터 정렬이 됩니다.
구현
1 |
|
최소값의 인덱스를 indexMin에 저장한 뒤, 현재 데이터와 indexMin에 있는 데이터를 swap하면서 정렬을 합니다.
시간 복잡도 분석
선택 정렬의 시간 복잡도를 분석해봅시다.
첫 번째 for문이 1부터 n까지, 두 번째 for문은 n-i-1번, 즉 (n-1, n-2, n-3, … , 1)번 돕니다.
1부터 n-1까지 모두 더하면 n*(n-1)/2 = (n2 - n) / 2 ∈ O(n2) 입니다.