Algorithm/inflearn

#선택 정렬

마닐라 2021. 9. 20. 23:00

 

 

 

import java.util.Scanner;

//선택정렬은 하나를 선택하고 제일 작은 값을 찾아서 선택한 값과 바꿔주는 정렬
//버블정렬은 마지막 제일 큰 값이 정해지므로 n-1-i만큼 돌지만
//선택정렬은 첫번째 제일 작은 값이 정해지므로 n만큼 돌아야함
public class Main {
    public int[] solution(int n, int[] arr) {
        //마지막 전까지 찾았으면 마지막 값을 탐색하지 않아도 됨
        for(int i = 0; i < n-1; i++) {
            int idx = i;
            for(int j = i+1; j < n; j++) {
                //arr[1] ~ arr[n-1] 까지 돌고 가장 작은 값이 idx로 들어간다.
                if(arr[j] < arr[idx]) idx=j;
            }
            //현재 비교 대상인 arr[0]과 가장 작은 값인 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+ " ");

    }
}

'Algorithm > inflearn' 카테고리의 다른 글

삽입정렬  (0) 2021.09.20
버블정렬  (0) 2021.09.20
★응급실  (0) 2021.09.19
교육과정설계  (0) 2021.09.19
공주 구하기  (0) 2021.09.19