
| 정렬 알고리즘 | 최선 | 평균 | 최악 | 제자리(In-place) | 안정(Stable) |
|---|---|---|---|---|---|
| 버블 정렬 | O(n) | O(n²) | O(n²) | ✅ | ✅ |
| 선택 정렬 | O(n²) | O(n²) | O(n²) | ✅ | ❌ |
| 삽입 정렬 | O(n) | O(n²) | O(n²) | ✅ | ✅ |
| 퀵 정렬 | O(n log n) | O(n log n) | O(n²) | ✅ | ❌ |
| 병합 정렬 | O(n log n) | O(n log n) | O(n log n) | ❌(추가 O(n)) | ✅ |
| Timsort | O(n) | O(n log n) | O(n log n) | ❌(추가 O(n)) | ✅ |
용어 한 줄 요약
Arrays.sort()는 내부적으로 무엇을 쓰나?Dual-Pivot QuickSort 사용
대표 타입: int[], long[], double[] 등
Timsort 사용 (실제 구현: 병합/삽입 혼합 기반)
대표 타입: String[], Integer[], 임의의 Comparable[]
팁
- 리스트라면
Collections.sort(list)또한 내부적으로 Timsort 계열을 사용(안정).- 이미 “부분적으로 정렬된(run이 많은)” 데이터는 Timsort에서 거의 O(n) 에 근접.