Arrays.sort()
Java에서 배열을 오름차순으로 정렬하는 편리한 정적 메서드입니다. 주로 기본 타입 배열과 객체 배열의 정렬에 사용됩니다.
사용법:
- Arrays.sort(array) : 기본적으로 배열을 오름차순으로 정렬합니다.
- Arrays.sort(array, fromIndex, toIndex) : 배열의 부분 구간 (fromIndex부터 toIndex - 1까지)을 정렬합니다.
int배열 정렬
int[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers); // {1, 2, 3, 5, 8}
// 부분 정렬
int[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers, 1, 4); // {5, 1, 3, 8, 2}
객체 정렬
String[] names = {"Alice", "Bob", "Charlie"};
Arrays.sort(names); // 사전순으로 정렬: {"Alice", "Bob", "Charlie"}
커스텀 Comparator 사용
Person[] people = {new Person("Alice", 25), new Person("Bob", 22)};
Arrays.sort(people, (p1, p2) -> Integer.compare(p1.age, p2.age)); // 나이순 정렬
2차원 배열 정렬
int[][] array = { {1, 3}, {2, 2}, {4, 1} };
Arrays.sort(array, (a, b) -> Integer.compare(a[1], b[1]));
// 결과: {{4, 1}, {2, 2}, {1, 3}}
여기서 a와 b는 array의 두 요소를 나타냅니다. 각 a와 b는 int[] 타입이므로, 두 번째 요소를 a[1]와 b[1]로 접근할 수 있습니다.
** a[1] == b[1]일 때 0 반환 → 순서 유지
더보기
더보기
Arrays.sort()는 배열의 크기와 타입에 따라 정렬 알고리즘을 다르게 사용합니다.
- 기본 타입(int, double, etc.) 배열: Dual-Pivot QuickSort 알고리즘을 사용합니다. 평균적으로 O(n log n)의 시간복잡도를 가집니다.
- 객체 배열: TimSort 알고리즘을 사용하며, O(n log n)의 시간복잡도를 유지합니다. TimSort는 Merge Sort와 Insertion Sort의 혼합 알고리즘으로, 안정 정렬(stable sort) 방식이라 정렬 전 순서를 유지합니다.
관련 문제 :
https://school.programmers.co.kr/learn/courses/30/lessons/135808
'문제 풀이 > 프로그래머스 알고리즘' 카테고리의 다른 글
코딩 테스트 - 오답노트 (0) | 2024.11.12 |
---|---|
체육복 + ConcurrentModificationException (0) | 2024.11.04 |
특정 날짜(xxxx, xx, xx)의 요일 구하기 - LocalDate (0) | 2024.10.24 |
가장 가까운 같은 글자 (0) | 2024.10.17 |
문자열 내 마음대로 정렬하기 // Arrays.sort(), Comparator<T> (1) | 2024.10.14 |