더북(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)입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.