Computer/알고리즘

병합 정렬(Merge Sort)

에린_1 2024. 6. 23. 23:52
728x90

병합 정렬(Merge Sort)

  • 합병 정렬이라고도 부르며, 분할 정복 방법을 통해 구현된다.
  • 빠른 정렬로 분류되며, 퀵소트와 함께 많이 언급되는 정렬 방식이다.
  • 퀵소트와는 반대로 안정 정렬에 속한다.
  • 요소는 분리하고 다시 합병시키면서 정렬해나가는 방식으로, 분리하는 방식은 퀵정렬과 유사하다.
    • Quick Sort : 피벗을 통해 정렬 → 분리
    • Merge Sort : 분리되지 않을 때 까지 분리 → 정렬
  • Merge Sort는 순차적인 비교로 정렬을 진행하므로, LinkedList의 정렬이 필요할 때 사용하면 효율적이다.

시간복잡도

  • O(nlogn)

공간복잡도

  • 병합 정렬이 입력 배열에서 분할 및 정복 방식으로 작동하고 정렬된 후 하위 배열이 다시 병합되기 때문에 공간복잡도는 O(n)이다.

장점

  • 병합 정렬은 동일한 값을 가진 요소의 상대적 순서를 유지하므로 안정적인 정렬 알고리즘이며, 대규모 데이터 세트에 효율적이다.
  • 병합 정렬은 시간 복잡도가 O(nlogn)이므로 요소 수가 많은 경우에도 성능이 우수하여, 외부 정렬에 적합하다.
  • 병합 정렬은 효율적인 병합 기술을 활용하여 외부 데이터 정렬을 처리할 수 있다.

단점

  • 병합 정렬은 임시 하위 배열을 저장하기 위해 추가 공간이 필요하므로 메모리가 제한된 환경에는 적합하지 않으며, 작은 데이터 집합에는 가장 효율적이지 않다.
  • 병합 정렬은 재귀 호출 및 병합 프로세스에 대한 오버헤드로 인해 작은 데이터 세트의 경우 삽입 정렬 또는 버블 정렬과 같은 다른 정렬 알고리즘보다 효율성이 떨어진다.
728x90

'Computer > 알고리즘' 카테고리의 다른 글

이분 탐색(Binary Search)  (0) 2024.06.24
힙 정렬(Heap Sort)  (0) 2024.06.24
퀵 정렬(Quick Sort)  (0) 2024.06.23
삽입 정렬(Insertion Sort)  (0) 2024.06.21
선택 정렬(Selection Sort)  (0) 2024.06.20