본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #06-01 1. 선택 정렬

문제

설명

N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.

정렬하는 방법은 선택정렬입니다.

 

입력 

첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.

두 번째 줄에 N개의 자연수가 공백을 사이에 두고 입력됩니다. 각 자연수는 정수형 범위 안에 있습니다.

 

출력 

오름차순으로 정렬된 수열을 출력합니다.

예시 입력 1 

6
13 5 11 7 23 15

예시 출력 1

5 7 11 13 15 23

 

 

 

내 풀이 = 선생님 풀이
import java.util.*;

public class Main6_1 {
    public int[] Solution(int n, int[] arr) {
        // 선택 정렬
        for (int i = 0; i < n-1; i++) {
            int min = i;
            for (int j = i+1; j < n; j++) {
                if(arr[min] > arr[j]) min = j;
            }
            int tmp = arr[min];
            arr[min] = arr[i];
            arr[i] = tmp;
        }
        return arr;
    }

    public static void main(String[] args) {
        Main6_1 T = new Main6_1();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        for(int x : T.Solution(n, arr))
            System.out.print(x + " ");
    }
}

이전에 자료구조 정리하면서 정렬 공부하고 정리해둔 게 도움이 되었다.

https://rookie-programmer.tistory.com/51

 

[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - 기본적인 정렬 알고리즘

정렬 알고리즘 Selection sort, Bubble sort, Insertion sort * 버블 정렬, 삽입 정렬, 선택 정렬 : 구현이 단순하지만 속도가 느림 * 퀵 정렬, 합병(병합) 정렬, 힙 정렬 : 구현이 복잡하지만 속도가 빠름 * Radix

rookie-programmer.tistory.com

 

 

 

결과