선택 정렬

Seungmin Lim·2022년 2월 13일
0

코딩문제연습

목록 보기
47/63

문제

나의풀이

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문이 한번 돌때, 해당 배열의 최솟값이 배열 맨 앞에 담긴다.

핵심키워드

선택정렬을 이용하면 전체적으로 정렬을 하는게 아니라 특정 값들만 정렬해야할 때 유용하게 사용할 수 있을것같다.

0개의 댓글