Java

Java) Sorting : 선택 정렬 알고리즘

pogun 2024. 12. 31. 09:58

Sorting : 정렬 -> 알고리즘

: 숫자의 크기에 따라서 순번대로 배치하는 처리

: 주어진 데이터를 특정 기준에 따라 오름차순 or 내림차순으로 나열하는 작업

 

오름차순(작은수부터)  내림차순(큰수부터)

        1  2  3  4  5                    5  4  3  2  1

종류 : 선택, 버블, 합병, 퀵 ... 많다.(선택, 버블, 퀵 정도 알면 된다.)

: 모든걸 다 알아야 한다는 생각으로 알고리즘만 파고있는 건 반대

 

ex)

{1, 4, 5, 2, 3}

41523 51423

52123

54213 54321

54321


선택 정렬 프로그램

조건 : 

1. 몇개의 숫자를 정렬할지 입력

2. 정렬할 숫자를 입력

3. 오름차순 / 내림차순 선택

Scanner sc = new Scanner(System.in);
int number[] = null;
int temp;

System.out.print("몇개의 숫자를 정렬하실건가요 : ");
int numberLen = sc.nextInt();
number = new int[numberLen];

System.out.print("정렬하실 숫자를 입력하세요 : ");
for (int w = 0; w < number.length; w++) {
    number[w] = sc.nextInt();
}

System.out.print("오름차순 / 내림차순 중 선택하세요 : ");
String tjsxor = sc.next();

if (tjsxor.equals("오름차순") || tjsxor.equals("내림차순")) {
    for (int i = 0; i < number.length - 1; i++) { // 0 ~ 3번지까지
        for (int j = i + 1; j < number.length; j++) { // 1 ~ 4번지
            if (tjsxor.equals("오름차순") && number[i] > number[j]) {
                temp = number[i];
                number[i] = number[j];
                number[j] = temp;
            } else if (tjsxor.equals("내림차순") && number[i] < number[j]) {
                temp = number[i];
                number[i] = number[j];
                number[j] = temp;
            }
        }
    }
} else {
    System.out.print("잘못된 입력입니다. '오름차순' 또는 '내림차순'으로 입력하세요.");
    return;
}
System.out.print("정렬된 결과:");
for (int i = 0; i < number.length; i++) {
    System.out.print(number[i] + "\t");
}

: 치환하는 구조를 생각해야 한다.

: 2중 for문으로 가능

: 내림차순이랑 오름차순 알고리즘 완벽하게 파악하기.

: 오름차순 ">", 내림차순  "<"(그냥 설계하고 부등호 반대로 해주면 된다.)