대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법
시간 복잡도 O(N^2)
비효율적 + 구현 어려움
핵심 : 최솟값 또는 최댓값을 찾고, 남은 정렬 부분의 가장 앞에 있는 데이터와 swap하는 것
public class SelectionSort {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] N = br.readLine().split("");
int[] A = new int[N.length];
StringBuilder sb = new StringBuilder();
int max;
for (int i = 0; i < A.length; i++) {
A[i] = Integer.parseInt(N[i]);
}
//선택 정렬
for (int i = 0; i < N.length - 1; i++) {
max = i;
for (int j = i + 1; j < N.length; j++) {
if (A[max] < A[j]) max = j;
}
int tmp = A[i];
A[i] = A[max];
A[max] = tmp;
}
for (int i = 0; i < N.length; i++) {
sb.append(A[i]);
}
System.out.println(sb);
}
}
ref : Do It 알고리즘 코딩 테스트 자바편 by 김종관