더북(TheBook)

icon_wait

 

파이썬의 정렬

어렵게 정렬 알고리즘의 원리를 공부한 후에 들으면 다소 허무한 이야기지만, 파이썬, 자바, C#과 같은 최신 컴퓨터 프로그래밍 언어는 대부분 정렬 기능을 내장하고 있습니다. 파이썬에서는 sort( ) 혹은 sorted( ) 함수를 이용하면 리스트를 쉽게 정렬할 수 있습니다. 사용 방법은 다음 실행 결과를 참고하세요.

 

>>> sorted([5, 2, 3, 1, 4])

[1, 2, 3, 4, 5]

 

>>> a = [5, 2, 3, 1, 4]

>>> a.sort()

>>> a

[1, 2, 3, 4, 5]

 

sorted( ) 함수는 인자로 리스트를 주면 그 리스트를 정렬한 리스트를 새로 만들어 돌려줍니다. 반면에 sort( ) 함수는 새 리스트를 따로 만들지 않고 정렬 대상이 되는 리스트 자체의 순서를 바꿔 줍니다. 기능은 같지만 약간 다르지요?

그렇다면 파이썬은 실제로 어떤 정렬 알고리즘으로 정렬을 하는 걸까요?

표준 파이썬 언어는 팀 피터스(Tim Peters)라는 사람이 만든 팀소트(Timsort)라는 알고리즘을 이용해 정렬을 합니다. 팀소트는 우리가 이미 배운 병합 정렬과 삽입 정렬의 아이디어를 적절하게 섞어 만든 새로운 정렬 알고리즘으로 평균 계산 복잡도는 O(n·logn)입니다.