Merge Sort
합병정렬은 Divde and Conquer의 개념을 적용한 정렬이다
Stable한 정렬로 정렬하고자하는 엔티티 벡터를 절반씩 분할해가며 분할이 완료된 후 합병을 하는 과정에서 대소관계 비교를 통해 정렬을 수행한다
O(n logn)의 시간복잡도와 O(n)의 공간 복잡도를 가진다
Dive and Conquer의 개념을 이해하면 쉽게 구현이 가능하다
동작 원리
오름차순 정렬 기준
- 정렬하고자 하는 엔티티 벡터의 크기가 1보다 작아질 때 까지 재귀적으로 분할을 수행한다
- 정렬하고자 하는 엔티티 벡터의 크기가 1이라면 분할된 두 엔티티 벡터 배열끼리 대소관계 비교를 통해 병합을 수행한다
- 병합을 수행할 때 기존 엔티티 벡터에 대한 정보를 저장하기 위한 공간이 필요하다
- 병합이 완료되면 이전 주소로 돌아가 전체 엔티티 벡터의 병합이 완료될 때 까지 병합을 수행한다
구현
c++
1 |
|