정렬 알고리즘은 앞선 게시물에서 다양하게 배웠고, 또한 그보다 많은 수의 알고리즘이 존재하기도 한다. 이러한 알고리즘을 사용해서 정렬을 수행하는 것도 좋지만 많은 경우에서 파이썬에서 기본적으로 제공하는 정렬 알고리즘을 사용하는 편이 유리할 수 있다.
- 파이썬은 기본 정렬 라이브러리인 sorted() 함수를 제공한다. 이는 퀵 정렬과 비슷한 정렬 방식인 병합 정렬을 기반으로 만들었는데 일반적으로 퀵 정렬보다는 느리지만 최악의 경우에서도 O(NlogN)을 보장한다는 장점을 가지고 있다. sorted() 함수는 리스트, 딕셔너리, 집합 자료형 등을 입력받아서 정렬된 리스트를 반환한다는 특징을 가지고 있다.
리스트 = sorted(정렬하려는 자료형)
- 이와는 조금 다르게 리스트에서 내부적으로 정렬을 수행하는 방법도 존재한다. 바로 리스트 객체의 내장 함수인 sort()를 이용하는 것이다. 이 내장 함수를 사용하면 새로운 리스트가 반환되지 않고 기존 리스트의 요소가 내부적으로 정렬된다.
리스트.sort()
이 함수들을 사용할 때 key 매개변수를 입력으로 받을 수 있다. key 값으로는 하나의 함수가 들어가야 하며, 이는 정렬의 기준이 된다. 만약 데이터가 튜플의 형태로 리스트에 저장되어 있을 때를 가정해보자. 각 데이터 (튜플)의 두 번째 값을 기준으로 정렬을 수행하는 소스코드는 아래와 같다. 또한 key 값으로 함수가 들어가야 한다고 했으므로 이를 람다식으로 표현할 수도 있다.
'Algorithm' 카테고리의 다른 글
정렬 (Sorting) (7) - 실전문제 6.3) 성적이 낮은 순서로 학생 출력하기 (0) | 2023.08.05 |
---|---|
정렬 (Sorting) (6) - 실전문제 6.2) 위에서 아래로 (0) | 2023.08.05 |
정렬 (Sorting) (4) - 계수 정렬 (Count Sort) (0) | 2023.08.05 |
정렬 (Sorting) (3) - 퀵 정렬 (Quick Sort) (0) | 2023.08.05 |
정렬 (Sorting) (2) - 삽입 정렬 (Insertion Sort) (0) | 2023.08.05 |