파이썬의 내장 정렬은 Tim sort 알고리즘으로 구현되어있다.
tim sort는 삽입 정렬과 병합 정렬을 합쳐서 구현한 알고리즘이다. 최악에 경우에 O(nlogn) 최선의 경우에 O(n)을 보장하는 알고리즘이다.
1. 리스트가 주어졌을때 이를 run 단위로 나눈다 (원소의 개수는 32 ~ 64개)
2. run 단위로 나눈 후에 run 단위로 insertion sort를 한다. -> 원소의 개수가 적기 때문에 효율적으로 동작함 O(n) 시간
3. 정렬된 단위별로 merge sort를 진행함.
4. 어떤 순서로 run들을 merge sort 하는지에 대해 stack을 이용하여 결정한다.
추가 메모리를 사용하기 때문에 in-place 알고리즘은 아님, 안정 정렬임
'Computer Science > Algorithm' 카테고리의 다른 글
#09 이진 탐색 (0) | 2022.01.08 |
---|---|
정렬 알고리즘 코드(python) (0) | 2022.01.08 |
#08 계수 정렬(Counting Sort) (0) | 2022.01.07 |
#07 기수 정렬(Radix Sort) (0) | 2022.01.07 |
#06 힙 정렬(Heap Sort) (0) | 2022.01.07 |
댓글