문제 풀이 (JAVA)
import java.util.*;
public class part6_1 {
public static void main(String[] args) {
// 선택 정렬
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int [] intarr = new int[N];
for(int i=0; i<N; i++) {
intarr[i] = input.nextInt();
}
int [] arr = solution(intarr,N);
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
private static int [] solution(int [] a, int n) {
int min=0;
int tmp=0;
// 선택정렬은 앞부터 하나씩 비교하여 서로간의 위치를 바꾼다.(모든 경우 탐색)
for(int i=0; i<n; i++){
min=a[i]; // 최솟값 초기화
for(int j=i+1; j<n; j++) {
if(min > a[j]) {
tmp = a[i]; // 앞의 값 임시 저장
min = a[j]; // 최소는 비교하는 뒤의 값
a[i] = a[j]; // 뒤의 값 을 앞에 값에 덮어쓰기
a[j] = tmp; // 뒤의 값을 임시저장한 앞의값 추가
}
}
}
return a;
}
}
주요 핵심 포인트
1. 선택 정렬은 i번째 인덱스부터 시작하여 i+1번째 다음 숫자부터 하나씩 비교하여 값이 더 작거나 크다면 값을 교체한다.
2. i번째 인덱스에서 모든 j번째 인덱스를 탐색하여 값을 구했을시 확정된 값은 비교하지 않고 다음 i+1번째부터 1을 반복한다.
개선해야할 사항
1. 확정된 숫자는 더이상 비교하지 않고 다음 배열을 반복해서 비교한다는 사실을 기억하자. 정렬은 종류가 여러가지라 헷갈릴수 있다.
'알고리즘' 카테고리의 다른 글
[삽입정렬] 삽입 정렬 (인프런 알고리즘 6-3) (0) | 2022.06.28 |
---|---|
[버블정렬] 버블 정렬 (인프런 알고리즘 6-2) (0) | 2022.06.28 |
[큐] 교육과정 설계(인프런 알고리즘 5-7) (0) | 2022.06.26 |
[큐] 공주 구하기 (인프런 알고리즘 5-6) (0) | 2022.06.26 |
[스택] 쇠막대기 (인프런 알고리즘 5-5) (0) | 2022.06.26 |