Arrays 클래스는 배열에 관련된 다양한 유틸리티 메서드를 제공합니다. 배열의 정렬에는 sort() 메서드를 주로 사용합니다.
예제:
int[] arr = {3, 1, 4, 2};
Arrays.sort(arr); // 오름차순 정렬
Collections 클래스는 컬렉션 프레임워크에 관련된 유틸리티 메서드를 제공합니다. 리스트의 정렬에는 sort() 메서드를 사용합니다.
예제:
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
list.add(2);
Collections.sort(list); // 오름차순 정렬
Comparable 인터페이스: 객체의 자연 순서(기본 정렬 순서)를 정의할 때 사용됩니다. 클래스가 Comparable 인터페이스를 구현하면 compareTo() 메서드를 오버라이딩하여 정렬 순서를 지정할 수 있습니다.
Comparator 인터페이스: 객체의 비교자를 정의할 때 사용됩니다. 별도의 비교자 클래스를 구현하거나 익명 클래스를 활용하여 정렬 순서를 지정할 수 있습니다.
1. 버블 정렬 (Bubble Sort): 인접한 두 요소를 비교하여 정렬하는 간단한 정렬 알고리즘입니다.
2. 선택 정렬 (Selection Sort): 가장 작은 요소를 선택하여 정렬하는 알고리즘으로, 실행 시간이 길어 실제로는 잘 사용되지 않습니다.
3. 삽입 정렬 (Insertion Sort): 요소를 하나씩 적절한 위치에 삽입하여 정렬하는 알고리즘입니다.
4. 병합 정렬 (Merge Sort): 분할 정복 알고리즘을 사용하여 배열을 분할하고 정렬한 후 병합하여 정렬하는 알고리즘입니다.
5. 퀵 정렬 (Quick Sort): 분할 정복 알고리즘을 사용하여 배열을 분할하고 정렬하는 알고리즘으로, 평균적으로 가장 빠른 실행 시간을 가집니다.
자바의 기본 정렬 알고리즘은 병합 정렬(Merge Sort)과 퀵 정렬(Quick Sort)을 혼합한 TimSort 알고리즘입니다. 이 알고리즘은 대부분의 경우에 매우 효율적이며, 이미 정렬된 배열에 대해서도 빠른 속도를 보장합니다.
자바에서는 기본적으로 배열과 컬렉션을 정렬하기 위한 표준 라이브러리를 제공하며, 개발자가 필요에 따라 Comparable 인터페이스와 Comparator 인터페이스를 구현하여 정렬 순서를 지정할 수 있습니다. 또한, 자바의 기본 정렬 알고리즘은 TimSort 알고리즘이며, 대부분의 상황에서 효율적으로 동작합니다.