TimSort

RIAN.P·2025년 5월 2일

ALGORITHM

목록 보기
3/8

TimSort

: Merge Sort + Insertion Sort를 결합한 하이브리드 정렬 알고리즘.
: Java의 Arrays.sort()에서 실제로 사용되는 정렬 알고리즘
즉, 자바에서 Arrays.sort()를 쓰면 내부적으로 TimSort가 작동.


✅ Merge Sort와 Insertion Sort를 섞은 이유

  • Merge Sort: 시간 복잡도는 항상 O(n log n )으로 안정적이지만, 작은 데이터에는 다소 느림
  • Insertion Sort: 시간 복잡도는 O(n^2)이지만, 데이터가 거의 정렬되어 있을 때는 매우 빠름
    ⇒ 그래서 TimSort는 이미 정렬돼 있는 부분Insertion Sort로 다듬고, 나머지는 Merge Sort처럼 합쳐서 정렬한다.

✅ TimSort의 특징

특징설명
stable Sort같은 값이 있을 때, 기존 순서 유지
실제 데이터에 강함이미 정렬된 부분이 많을수록 더 빠름
시간 복잡도평균, 최악: O(n log n) / 최선: O(n)

✅ Java에서 사용되는 곳

Java 메서드사용 알고리즘
Arrays.sort(Object[])TimSort
Arrays.sort(int[])Dual-Pivot QuickSort (Primitive 타입엔 TimSort 사용X)

0개의 댓글