drexqq

[Java, 자바] Sorting(정렬) - 선택 본문

Back-End/Java

[Java, 자바] Sorting(정렬) - 선택

drexqq 2020. 5. 26. 17:01
728x90
반응형

Java의 sorting(정렬)에 대해서 알아보자.

 

sorting은 선택, 삽입, 버블, 합병, 퀵 총 5종류가 있다.

 

오늘은 선택 정렬에 대해서 알아보겠다.

 

선택 정렬은 현재 위치에 들어갈 값을 찾아 정렬하는 방식이다.

현재 위치에 저장 될 값의 크기가 작냐, 크냐에 따라 오름차순 정렬(ascending)과 내림차순(descending)로 구분할 수 있다.

 

아래 코드를 보자

package main;

import java.util.Scanner;

public class mainClass {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		/*
		 	Sorting (정렬)
		 	
		 	숫자의 크기에 따라서 순번대로 배치
		 	오름차순 - 큰값이 뒤로
		 	내림차순 - 큰값이 앞으로
		 */		
		// 정렬할 개수 ?
		// 정렬할 개수를 동적할당
		System.out.println("몇 개의 숫자를 정렬하시겠습니까 ?");
		int numCount = sc.nextInt();
		int numArr[] = new int[numCount];
		
		// 정렬할 숫자를 입력
		// 배열에 숫자 대입
		System.out.println("정렬할 숫자를 입력해주세요.");
		for (int i = 0; i < numArr.length; i++) {
			int num = sc.nextInt();
			numArr[i] = num;
		}
		
		for (int i = 0; i < numArr.length; i++) {
			System.out.println("numArr["+i+"] = "+numArr[i]);
		}
		
		// 오름차순/내림차순 선택
		System.out.println("오름차순(1) / 내림차순(2) 을 선택해주세요.");
		int order = sc.nextInt();
		
		// 정렬
		int temp;	// swap
		if (order == 1) {
			System.out.println("오름차순을 선택하셨습니다.");
			for (int i = 0; i < numArr.length-1; i++) {		
				for (int j = i + 1; j < numArr.length; j++) {	
					// 오름차순
					if (numArr[i] > numArr[j]) {
						temp = numArr[i];
						numArr[i] = numArr[j];
						numArr[j] = temp;
					}
				}
			}
		}
		else if (order == 2) {
			System.out.println("내림차순을 선택하셨습니다.");
			for (int i = 0; i < numArr.length - 1; i++) {
				for (int j = i + 1; j < numArr.length; j++) {
					// 내림차순
					if (numArr[i] < numArr[j]) {
						temp = numArr[i];
						numArr[i] = numArr[j];
						numArr[j] = temp;
					}
				}
			}
		}
		
		// 결과 출력
		for (int i = 0; i < numArr.length; i++) {
			System.out.println("numArr["+i+"] = "+numArr[i]);
		}
		
		sc.close();
	}

}

 

정렬할 숫자의 개수를 받고, 그 개수에 맞는 숫자들을 입력받은 뒤

 

오름차순, 내림차순을 선택해 그에 맞는 결괏값을 사용자에게 보여주는 코드이다.

 

728x90
반응형
Comments