Here is how Python's sorting algorithm works (Pre 3.11)
- Tim Sort는 Python (3.11 이전), Java, Rust 등에서 사용되는 하이브리드 정렬 알고리즘입니다. 🐍
- 배열을 32~64개 요소로 재귀적으로 분할한 후, 작은 배열은 하드웨어에 최적화된 삽입 정렬(Insertion Sort)로 정렬됩니다. 📏
- 정렬된 작은 배열들은 병합 정렬(Merge Sort)과 유사한 방식으로 재귀적으로 병합됩니다. 🤝
- 이 알고리즘은 삽입 정렬의 낮은 상수 계수와 병합 정렬의 적은 스택 호출이라는 두 알고리즘의 장점을 결합합니다. ✨
- 배열 병합 시, A+B 크기의 보조 공간 대신 원본 배열 내에서 정렬하여 보조 공간 사용을 최소화합니다. ♻️
- 이미 정렬된 배열 부분을 감지하여 불필요한 작업을 줄이고 스택 호출을 감소시키는 최적화가 적용됩니다. 🔍
- 재귀 시스템 호출 대신 자체 스택을 사용하여 병합할 배열을 길이 순으로 정렬함으로써 보조 저장 공간을 더욱 절약합니다. 📚
- 이러한 다양한 엔지니어링 최적화 덕분에 Tim Sort는 실제 환경에서 매우 빠르게 작동합니다. 🚀