import java.util.*;
class Main {
public int[] solution(int n,int[] arr) {
for(int i=0; i<n; i++) {
int idx = i;
for(int j=i+1; j<n; j++) {
if(arr[j] < arr[idx]) {
idx = j; //최솟값의 index
}
}
//i번째 값과 idx교체.
int tmp = arr[i];
arr[i] = arr[idx];
arr[idx] = tmp;
}
return arr;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i=0; i<n;i++) {
arr[i] = kb.nextInt();
}
for(int x : T.solution(n, arr)) System.out.print(x + " ");
}
}
선택정렬방법!
idx = 인덱스
2중 for문을 통해 idx에는 최솟값의 인덱스를 저장하고 for문이 다 끝나고나면 i값과 idx의 값을 교체시켜준다.
i=0부터 탐색을 시작해서 j문을 통해 i번째값보다 더 작은 값이 있는지 확인.
idx에는 최솟값의 위치를 담아서 i값과 idx의 값을 교체할수있다.
따라서, i문이 한번 돌때, 해당 배열의 최솟값이 배열 맨 앞에 담긴다.
선택정렬을 이용하면 전체적으로 정렬을 하는게 아니라 특정 값들만 정렬해야할 때 유용하게 사용할 수 있을것같다.