본문 바로가기
이론/알고리즘

Timsort - 구현 미정

by hirudev 2021. 5. 17.

소스짜다 문득 생각들었다.

 

도대체, python 의 sort 함수는 어떤식으로 정렬을 하길래 이정도 속도를 보여주는가?

 

찾아보니

 

java 의 sort 와 python의 sort 그 외의 다수의 플랫폼에서의 내장형 sort 함수는 이 알고리즘을 기반으로 사용한다고 한다.

 

평균 시간복잡도는 best case 의 경우 O(n) 이고, 평균적으로는 O(nlogn), 최악의 경우에도 O(nlogn) 의 성능을 보여준다고 하니 괜찮은 성능을 보여준다. (적어도 버블처럼 n^2 까진 안가니까)

 

timsort 작업 순서로 크게

1. minimum size 를 최적화

2. merge 정렬

3. insert 정렬

위와 같은 순서로 돌아간다고 하는데...

 

나중에 한번 구현해봐야겠다.

 

Timsort ( wikipedia EN )

https://en.wikipedia.org/wiki/Timsort

 

Tim sort 에 대해 알아보자 - NAVER D2

https://d2.naver.com/helloworld/0315536

 

소스들

https://github.com/timsort/cpp-TimSort

https://www.geeksforgeeks.org/timsort/

 

 

 

'이론 > 알고리즘' 카테고리의 다른 글

introsort 링크 & 고민  (0) 2022.02.04
Optimal binary search tree 링크  (0) 2022.02.04

댓글