(좌) 오름차순 정렬 / (우) 내림차순 정렬

 

import java.util.Arrays;
import java.util.Scanner;

public class Example1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 1. 몇 개를 정렬?
        System.out.print("몇 개를 정렬하시겠습니까? ---> ");
        int size = sc.nextInt();

        // 결과를 저장할 배열 선언
        int[] nums = new int[size];
        
        // 2. 숫자의 갯수에 맞게 입력
        System.out.println("정렬하실 숫자를 입력해주십시오.");
        for (int i=0; i<size; i++) {
            System.out.printf("%d칸 중 %d개 입력중... --> ", size, i+1);
            nums[i] = sc.nextInt();
        }
        // 3. 오름/내림
        System.out.println("정렬 방식을 선택해주세요.");
        System.out.print("오름차순 (0) / 내림(1) --> ");
        int how = sc.nextInt();

        // 4. 방법에 맞게 정렬
        // 선택 정렬로, 오름차순 정렬
        if (how == 0) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 min 값 초기 할당
                int min_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] < nums[min_index]) {
                        min_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[min_index];
                nums[min_index] = temp;
            }
        } else if (how == 1) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 max 값 초기 할당
                int max_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] > nums[max_index]) {
                        max_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[max_index];
                nums[max_index] = temp;
            }
        }

        // 5. 결과 출력
        System.out.print(Arrays.toString(nums));
    }
}

+ Recent posts