Arrays.sort()와 Collections.sort()의 차이

dev-jjun·2023년 1월 20일
0

Algorithm

목록 보기
5/15

자바 알고리즘에서 정렬을 해야할 때, sort() 메서드가 Arrays와 Collections 두 가지로 존재하는 것을 알 수 있다. 같은 정렬 기능을 하지만, 내부 정렬 방식 및 대상에서 차이가 있다.

정렬 알고리즘대상타입시간 복잡도
Arrays.sort()DualPivotQuickSort배열primitive(기본형), reference(참조형)평균: O(nlogn) / 최악: O(n^2)
Collections.sort()TimSort(삽입정렬+병합정렬)컬렉션(List, Set 등)reference(참조형) → 클래스의 객체 타입평균, 최악: O(nlogn)

Arrays.sort()

java.util.Arrays 의 메소드로, 정렬 기준 기본값은 오름차순이다.
→ 숫자 > 대문자 > 소문자 > 한글 순으로 정렬된다.

Arrays.sort(배열 참조변수)  // 오름차순
Arrays.sort(배열 참조변수, Collections.reverseOrder());  // 내림차순

Collections.sort()

java.util.Collections 의 메소드로, sort()는 오름차순, reverse()는 내림차순 정렬을 구현할 수 있다.
→ 한글순 > 소문자 > 대문자 > 숫자 순으로 정렬된다. (*오름차순)

Collections.sort(list);  // 오름차순
Collections.reverse(list);  // 내림차순

시간복잡도와 효율성에 따라 위 함수를 적절히 사용할 수 있다. 최악의 경우에서 시간 복잡도를 최소화하고 싶다면, primitive 타입의 배열 대신 reference 타입의 배열을 사용해 Arrays.sort()가 TimeSort를 수행할 수 있도록 유동적으로 사용할 수 있다.

즉, 어떤 타입의 배열을 받느냐에 따라 실행되는 정렬 알고리즘이 달라지는 것이므로 시간 단축 시 이를 참고하면 좋다!

참고 자료

https://codingnojam.tistory.com/38

https://yuja-kong.tistory.com/183

https://devlog-wjdrbs96.tistory.com/68

profile
서버 개발자를 꿈꾸며 성장하는 쭌입니다 😽

0개의 댓글