자바에서 오름차순 정렬은 Arrays.sort([배열 주소값]) 만 하면 되지만
내림차순 정렬은 별도로 두번째 인자에 다른 요소를 더 추가해야 된다.
가끔씩 내림차순 정렬을 이용하다 보니 헷갈려서 이번에 정리해보는 시간을 가졌다.
내림차순 정렬
1. 기본 자료형(Primitive type)
기본 자료형은 아쉽게도 내림차순 정렬을 할 수 없다.
내림차순 정렬을 사용하기 위해서 객체형으로 변환해 주자.
ex) int[] → Integer[], char[] → Charater[]
2. 객체형(Wrapper class)
2-1. Collections.reverseOrder() 메서드 사용
Integer[] arr = { 2, 63, 25, 23, 13, 36 };
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));
// result
[63, 36, 25, 23, 13, 2]
2-2. Comparator 직접 구현
Integer[] arr = { 2, 63, 25, 23, 13, 36 };
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
return i2 - i1;
// return i2.compareTo(i1);
}
}
i1이 2, i2가 63이라고 가정해보자.
63 - 2 = 61(양수)
양수를 리턴 -> 내림차순 정렬
음수를 리턴 -> 오름차순 정렬
0을 리턴 -> 정렬하지 않음
2-3. Comparator 람다식
Integer[] arr = { 2, 63, 25, 23, 13, 36 };
Arrays.sort(arr, (i1, i2) -> i2 - i1);
2-2에서 직접 구현한 것을 2-3처럼 람다식을 이용하여 간단하게 표현할 수 있다.
'Algorithm > 백준' 카테고리의 다른 글
백준 1620(나는야 포켓몬 마스터 이다솜) (0) | 2023.11.11 |
---|---|
백준 18110 (solved.ac) (0) | 2023.10.08 |
백준 11866 (요세푸스 문제 0) (0) | 2022.09.12 |
백준 4344 (평균은 넘겠지) (0) | 2022.06.30 |
백준 10809 (알파벳 찾기) (0) | 2022.06.30 |