병합정렬
-
병합 정렬, 힙 정렬 (파이썬)Algorithm 2021. 6. 22. 21:33
병합 정렬 merge sort 노이만이 고안한 분할 정복 알고리즘. 퀵 정렬과 반대로 안정 정렬에 속한다. 배열을 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘이다. 과정 i) 리스트의 길이가 0또는 1이면 이미 정렬된 것으로 본다. ii) 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. iii) 각 부분 리스트를 재귀적으로 병합 정렬을 이용해 정렬한다. iv) 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 장점 - 안정적인 정렬 방법 - 레코드를 linked list로 구성하면, 데이터의 이동은 무시할 수 있을 정도로 작아진다. (퀵 정렬을 포함한 다른 정렬 방법보다 효율적이다.) 단점 - 레코드를 배열로 구성하면 임시 ..