Java 에서 배열이 정렬되었는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 숫자 배열이 정렬되었는지 확인하는 방법을 배우게 됩니다. 많은 정렬 알고리즘의 핵심 아이디어인 인접 요소 비교라는 기본적인 개념을 탐구할 것입니다. 오름차순 및 내림차순 정렬을 모두 확인하는 방법과 요소가 같은 경우를 처리하는 방법을 배우게 됩니다. 이 랩을 마치면 배열이 정렬되었는지 판단하는 데 필요한 로직에 대한 확실한 이해를 갖게 될 것입니다.

정렬을 위한 인접 요소 비교

이 단계에서는 많은 정렬 알고리즘의 핵심 아이디어인 인접 요소 비교라는 기본적인 개념을 탐구하기 시작합니다. 정렬은 오름차순 또는 내림차순과 같이 특정 순서로 요소를 배열하는 프로세스입니다.

숫자 목록이 있고 이를 가장 작은 숫자부터 가장 큰 숫자 순으로 정렬하려는 경우를 상상해 보세요. 시작하는 간단한 방법 중 하나는 서로 옆에 있는 두 개의 숫자를 보고 어떤 숫자가 먼저 와야 하는지 결정하는 것입니다.

이 아이디어를 보여주기 위해 간단한 Java 프로그램을 만들어 보겠습니다. 두 숫자를 비교하는 클래스를 만들 것입니다.

  1. WebIDE 편집기에서 HelloJava.java 파일이 아직 열려 있으면 엽니다. 이 파일을 새 프로그램에 맞게 수정합니다.

  2. 파일의 전체 내용을 다음 코드로 바꿉니다.

    public class CompareNumbers {
        public static void main(String[] args) {
            int number1 = 15;
            int number2 = 10;
    
            System.out.println("Comparing " + number1 + " and " + number2 + ":");
    
            if (number1 > number2) {
                System.out.println(number1 + " is greater than " + number2);
            } else if (number1 < number2) {
                System.out.println(number1 + " is less than " + number2);
            } else {
                System.out.println(number1 + " is equal to " + number2);
            }
        }
    }

    이 코드의 새로운 부분을 살펴보겠습니다.

    • public class CompareNumbers: 프로그램이 수행하는 작업을 더 잘 반영하기 위해 클래스 이름을 CompareNumbers로 변경했습니다. 파일 이름은 클래스 이름과 일치해야 하므로 나중에 파일 이름을 바꿔야 합니다.
    • int number1 = 15;int number2 = 10;: 이 줄은 두 개의 정수 변수 number1number2를 선언하고 초기 값을 할당합니다.
    • System.out.println("Comparing " + number1 + " and " + number2 + ":");: 이 줄은 어떤 숫자를 비교하는지 나타내는 메시지를 출력합니다.
    • if (number1 > number2): 이것은 if 문입니다. 괄호 안의 조건 (number1 > number2) 이 참인지 확인합니다. 참이면 if 문 바로 뒤의 중괄호 {} 안의 코드가 실행됩니다.
    • else if (number1 < number2): 이것은 else if 문입니다. if 문의 조건이 거짓이면 이 조건 (number1 < number2) 이 확인됩니다. 참이면 중괄호 안의 코드가 실행됩니다.
    • else: 이것은 else 문입니다. ifelse if 조건이 모두 참이 아니면 else 블록 안의 코드가 실행됩니다.
    • System.out.println(...): 이 줄은 비교 결과에 따라 메시지를 출력합니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 이제 새 클래스 이름과 일치하도록 파일 이름을 바꿔야 합니다. 터미널에서 ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
  5. mv 명령을 사용하여 파일 이름을 바꿉니다.

    mv HelloJava.java CompareNumbers.java

    이 명령은 HelloJava.java 파일을 CompareNumbers.java로 이동 (이름 변경) 합니다.

  6. 이제 새 프로그램을 컴파일합니다.

    javac CompareNumbers.java

    컴파일이 성공하면 출력이 표시되지 않습니다.

  7. 마지막으로 컴파일된 프로그램을 실행합니다.

    java CompareNumbers

    비교 결과를 나타내는 출력이 표시됩니다.

    Comparing 15 and 10:
    15 is greater than 10

두 개의 인접 요소를 비교하고 결과를 출력하는 Java 프로그램을 성공적으로 만들고 실행했습니다. 이 간단한 비교는 더 복잡한 정렬 알고리즘의 구성 요소입니다.

오름차순 및 내림차순 확인

이전 단계에서는 두 숫자를 비교하는 방법을 배웠습니다. 이제 이를 확장하여 인접한 숫자 쌍이 오름차순 또는 내림차순인지 확인해 보겠습니다. 이것은 정렬에 대해 생각할 때 또 다른 기본적인 개념입니다.

오름차순은 요소를 가장 작은 숫자부터 가장 큰 숫자 순으로 배열하는 것을 의미합니다 (예: 1, 5, 10). 내림차순은 요소를 가장 큰 숫자부터 가장 작은 숫자 순으로 배열하는 것을 의미합니다 (예: 10, 5, 1).

CompareNumbers.java 프로그램을 수정하여 이러한 특정 순서를 확인합니다.

  1. WebIDE 편집기에서 CompareNumbers.java 파일을 엽니다.

  2. 기존 코드를 다음 코드로 바꿉니다.

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 15;
            int number2 = 10;
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }

    변경 사항은 다음과 같습니다.

    • public class CheckOrder: 클래스 이름을 다시 CheckOrder로 변경했습니다. 파일 이름을 일치하도록 바꿔야 합니다.
    • if 조건은 이제 number1number2보다 작은지 확인합니다. 참이면 오름차순입니다.
    • else if 조건은 number1number2보다 큰지 확인합니다. 참이면 내림차순입니다.
    • else 블록은 숫자가 같은 경우를 처리합니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
  5. 새 클래스 이름과 일치하도록 파일 이름을 바꿉니다.

    mv CompareNumbers.java CheckOrder.java
  6. 수정된 프로그램을 컴파일합니다.

    javac CheckOrder.java

    다시, 출력이 없으면 컴파일이 성공했음을 의미합니다.

  7. 프로그램을 실행합니다.

    java CheckOrder

    number1 = 15number2 = 10인 경우 출력은 다음과 같아야 합니다.

    Checking order of 15 and 10:
    The numbers are in descending order.
  8. 오름차순의 경우를 확인하기 위해 숫자를 빠르게 수정해 보겠습니다. 편집기에서 CheckOrder.java를 열고 값을 변경합니다.

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 5; // Changed from 15
            int number2 = 8; // Changed from 10
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }
  9. 파일을 저장합니다.

  10. 프로그램을 다시 컴파일합니다.

    javac CheckOrder.java
  11. 프로그램을 실행합니다.

    java CheckOrder

    이제 출력은 오름차순을 반영해야 합니다.

    Checking order of 5 and 8:
    The numbers are in ascending order.

두 개의 인접한 숫자가 오름차순 또는 내림차순인지 확인하도록 프로그램을 성공적으로 수정했습니다. 이것은 정렬 알고리즘이 요소의 올바른 위치를 결정하는 방법을 이해하는 데 중요한 단계입니다.

동일한 요소 처리

이전 단계에서는 두 숫자를 비교하고 오름차순 또는 내림차순인지 확인했습니다. 또한 숫자가 같은 경우도 포함했습니다. 이 단계에서는 인접한 요소가 동일한 시나리오를 처리하는 데 중점을 둡니다.

정렬하는 동안 동일한 요소의 순서는 일반적으로 최종 정렬 결과에 중요하지 않지만, 이 경우를 올바르게 식별하려면 비교 논리가 중요합니다. 현재 CheckOrder.java 프로그램은 else 블록으로 이를 이미 처리하고 있습니다. 이 경우를 명시적으로 테스트해 보겠습니다.

  1. WebIDE 편집기에서 CheckOrder.java 파일을 엽니다.

  2. number1number2의 값을 동일하게 수정합니다.

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 7; // Changed to 7
            int number2 = 7; // Changed to 7
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
  5. 수정된 프로그램을 컴파일합니다.

    javac CheckOrder.java

    출력이 없으면 컴파일이 성공했음을 나타냅니다.

  6. 프로그램을 실행합니다.

    java CheckOrder

    두 숫자를 모두 7 로 설정하면 이제 출력은 다음과 같아야 합니다.

    Checking order of 7 and 7:
    The numbers are equal.

이것은 두 인접한 숫자가 같을 때 프로그램이 올바르게 식별함을 확인합니다. 이 경우를 처리하는 것은 비교 논리의 완전성을 위해 중요합니다.

정렬 알고리즘의 맥락에서 인접한 요소가 같으면 이미 유효한 상대적 순서에 있습니다 (엄격함에 따라 오름차순과 내림차순 모두 참으로 간주될 수 있지만, 일반적으로 "같음"으로 간주되며 스왑이 필요하지 않음).

이제 인접한 요소가 같은 경우를 성공적으로 테스트하여 정렬 목적으로 두 개의 인접한 숫자를 비교하는 탐구를 완료했습니다.

요약

이 랩에서는 정렬 알고리즘의 핵심 아이디어인 인접 요소 비교라는 기본적인 개념을 탐구하는 것으로 시작했습니다. 두 숫자를 비교하고 하나가 다른 숫자보다 크거나, 작거나, 같은지 확인하는 간단한 Java 프로그램을 만드는 방법을 배웠습니다. 여기에는 변수 선언, 할당 및 조건문 (if, else if, else) 에 대한 기본적인 Java 구문을 이해하는 것이 포함되었습니다. 또한 기존 Java 파일을 수정하는 연습을 하고 클래스 이름과 파일 이름을 일치시키는 것의 중요성을 배웠습니다.

인접 요소 비교라는 개념을 바탕으로, 일련의 숫자 내에서 오름차순과 내림차순을 모두 확인하도록 이해를 확장했습니다. 여기에는 비교 논리를 여러 요소에 반복적으로 적용하는 것이 포함되었습니다. 마지막으로, 정렬 확인 중에 동일한 요소를 처리하는 시나리오를 해결하여 인접 요소가 동일한 값을 갖는 경우를 논리가 올바르게 처리하도록 했습니다. 이러한 단계는 Java 에서 배열이 정렬되었는지 프로그래밍 방식으로 확인하는 방법에 대한 기본적인 이해를 제공했습니다.