본문 바로가기
언어/java

자바 배열 오름차순 내림차순 정렬 Arrays.sort()

by 클로드 2021. 1. 6.
반응형

Arrays.sort()

java.util.Arrays 클래스의

Arrays.sort() 함수를 이용하여  배열의 오름차순 내림차순으로 쉽게 정렬할 수 있습니다.

 

Dual-Pivot Quicksort 알고리즘으로 정렬이 됩니다.

평균 시간복잡도 : O(n log n)

최악 시간복잡도 : O(n^2)

 

오름차순

int[] arr1 = new int[] {5, 3, 2, 4, 1, 2};

System.out.print("정렬 전 : ");
for (int i = 0; i < arr1.length; i++) {
    System.out.print(arr1[i] + " ");
}
System.out.println();

//오름차순 정렬
Arrays.sort(arr1);

System.out.print("정렬 후 : ");
for (int i = 0; i < arr1.length; i++) {
    System.out.print(arr1[i] + " ");
}

 

결과

정렬 전 : 5 3 2 4 1 2 
정렬 후 : 1 2 2 3 4 5 

 

내림차순

내림차순의 경우 

java.util.Comparator 클래스나 java.util.Collections 클래스

Comparator.reverseOrder() 를 이용하거나

Collections.reverseOrder() 를 이용합니다

 

* 주의해야 될 것은 자료형

int int[] arr1 = new int[] {5, 3, 2, 4, 1, 2}; 대신

Integer[] arr1 = new Integer[] {5, 3, 2, 4, 1, 2}; 로 이용해야 합니다

Integer[] arr1 = new Integer[] {5, 3, 2, 4, 1, 2};

System.out.print("정렬 전 : ");
for (int i = 0; i < arr1.length; i++) {
    System.out.print(arr1[i] + " ");
}
System.out.println();

//내림차순 정렬
Arrays.sort(arr1, Comparator.reverseOrder()); //Comparator
//Arrays.sort(arr1, Collections.reverseOrder()); //Collections

System.out.print("정렬 후 : ");
for (int i = 0; i < arr1.length; i++) {
    System.out.print(arr1[i] + " ");
}
System.out.println();

결과

정렬 전 : 5 3 2 4 1 2 
정렬 후 : 5 4 3 2 2 1 

 

만약 내가 원하는 조건으로 정렬의 재정의 하고 싶다면

Comparator 인터페이스를 생성하여 compare 오버라이드 하여 재정의 합니다

Arrays.sort(arr1, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1); //내림차순
    }
});

 

 

java Arrays api 문서

docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#sort-int:A-

 

 

 

반응형

댓글