알고리즘 개념

[개념] 정렬

sunhanmoo 2026. 6. 16. 15:03

오름차순 정렬

오름차순 정렬은 데이터를 가장 작은 값부터 시작하여 점차 큰 값으로 나열하는 과정을 의미한다.

 

자바에서는 Arrays.sort() 함수를 사용하여 오름차순 정렬을 간단하게 구현 가능하다.

import java.util.*;
import java.io.*;

class AscendingSort {
    public static void main(String[] args) throws IOException {
        int[] A = {5, 3, 2, 4, 1};
        Arrays.sort(A);
        System.out.println(Arrays.toString(A));
    }
}

내림차순 정렬

내림차순 정렬은 데이터를 가장 큰 값부터 시작하여 점차 작은 값으로 나열하는 과정을 의미한다.

 

자바에서는 배열의 기본 자료형을 클래스형으로 선언하여 내림차순 정렬을 간단하게 구현 가능하다.

import java.util.*;
import java.io.*;

class DescendingSort1 {
    public static void main(String[] args) throws IOException {
        Integer[] A = {5, 3, 2, 4, 1};
        Arrays.sort(A, Collections.reverseOrder());
        System.out.println(Arrays.toString(A));
    }
}

이처럼 배열을 클래스형으로 선언하면 Collections.reverseOrder()를 이용하여 정렬 기준을 지정할 수 있다. 좋은 방법이지만 실제 코딩 테스트에서 클래스형을 배열의 자료형으로 사용하는 경우가 많지 않으므로 다른 방법도 고려해 보아야 한다.

 

부호를 임시로 반전시키는 아이디어를 활용하여 내림차순 정렬을 구현할 수 있다.

import java.util.*;
import java.io.*;

class DescendingSort2 {
    public static void main(String[] args) throws IOException {
        int[] A = {5, 3, 2, 4, 1};
        negate(A);
        Arrays.sort(A);
        negate(A);
        System.out.println(Arrays.toString(A));
    }

    public static void negate(int[] temp) {
        for (int i = 0; i < temp.length; i++) {
            temp[i] *= -1;
        }
    }
}

이 방식은 먼저 모든 데이터를 음수로 바꾼 뒤 Arrays.sort() 함수로 오름차순 정렬을 수행하고, 다시 부호를 되돌려 원하는 내림차순 형태로 만드는 기법이다.

'알고리즘 개념' 카테고리의 다른 글

[개념] 나머지 연산  (0) 2026.06.16
[개념] 인덱스  (0) 2026.06.16
[개념] 시간 복잡도  (0) 2026.06.15