728x90
/* Arrays.sort, Collections.sort */
Arrays.sort() 는 Array를 정렬해준다.
Collections.sort()는 ArrayList, LinkedList 같은 List 인터페이스를 정렬해준다.
/* Arrays.sort */
- primitive 타입인 경우
Arrays.sort() 를 살펴보니 듀얼피봇 퀵정렬(Dual-Pivot Quicksort)을 사용한다고 되어 있다.
Dual-Pivot Quicksort는 Quicksort와는 다르게 Pivot을 2개를 두고 3개의 구간으로 만들어 Quicksort를 진행한다고 한다.
이 때 Pivot을 설정할 때는 Median을 이용한다고 알고 있다.
시간복잡도는 O(n log(n))으로 나와있다.
- reference(참조) 타입인 경우 (객체 클래스)
참조 타입인 경우는 TimSort를 사용한다고 나와있다.
Timsort는 InsertionSort와 MergeSort 를 섞은 정렬 방법이라고 한다.
/* Collections.sort */
Collections.sort() 를 보면 list.sort()의 메서드를 실행한다.
list.sort() 메서드를 보면 Arrays.sort()를 실행한다는 것을 알수가 있다.
위에서 살펴봤듯이 이는 곧 Array.sort()를 실행할 때 TimSort가 사용되는 것을 알 수가 있다.
이때 시간 복잡도는 O(n log(n))이라고 한다.
728x90
'자바' 카테고리의 다른 글
[JAVA] 자바 8, 11, 17, 21 그리고 22 업데이트 (1) | 2024.03.27 |
---|---|
[JAVA] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy) (0) | 2024.03.19 |
[Java] equals 와 hashCode - 객체 일 경우 (0) | 2024.03.17 |
[JAVA] 불변 객체 & 불변 클래스 (0) | 2024.03.13 |
[JAVA] 컬렉션 - LinkedList (0) | 2024.02.07 |