선택 정렬이란, 정렬되지 않은 데이터들 중 기준 위치의 데이터와 나머지 중 가장 작은 데이터를 찾아 교환해나가는 정렬 방식이다.
(처음 기준 위치는 0번 인덱스를 가르킨다.)
출처: algorithmcanvas
기준 위치를 제외한 나머지 인덱스 중 더 작은 값 중 최소값의 위치를 찾는다.
그 위치를 기준 위치와 변경한다.
(만약, 더 작은 값이 없다면 pass)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
static int N;
static int[] selectionSort;
public static void main(String[] args) throws IOException {
init();
for (int switchIdx = 0; switchIdx < N - 1; switchIdx++) {
int curMinIdx = switchIdx;
for (int otherIdx = switchIdx + 1; otherIdx < N; otherIdx++) {
if (selectionSort[curMinIdx] > selectionSort[otherIdx])
curMinIdx = otherIdx;
}
if (curMinIdx == switchIdx)
continue;
int tmp = selectionSort[switchIdx];
selectionSort[switchIdx] = selectionSort[curMinIdx];
selectionSort[curMinIdx] = tmp;
}
for (int idx = 0; idx < N; idx++) {
sb.append(selectionSort[idx]).append(" ");
}
System.out.println(sb);
}
public static void init() throws IOException {
N = Integer.parseInt(br.readLine().trim());
st = new StringTokenizer(br.readLine().trim());
selectionSort = new int[N];
for (int idx = 0; idx < N; idx++) {
selectionSort[idx] = Integer.parseInt(st.nextToken());
}
}
}