Algorithm/백준

자바 내림차순 정렬 하는 법

leecom116 2023. 5. 1. 21:09

자바에서 오름차순 정렬은 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처럼 람다식을 이용하여 간단하게 표현할 수 있다.