피드로 돌아가기
Dev.toBackend
원문 읽기
Shared Buffer Pattern 도입을 통한 Merge Sort 메모리 오버헤드 최적화
Guía Definitiva de Merge Sort: El Algoritmo de Divide y Vencerás
AI 요약
Context
Divide and Conquer 기반의 Merge Sort는 모든 케이스에서 O(n log n)의 시간 복잡도를 보장하는 안정적인 알고리즘임. 다만 재귀적 분할 과정에서 지속적으로 새로운 Slice를 생성함에 따라 메모리 할당 비용이 증가하고 Garbage Collector 부하가 발생하는 한계가 존재함.
Technical Solution
- Two-pointer technique를 활용한 분할 배열의 효율적 병합 구조 설계
- 재귀 호출마다 발생하는 동적 메모리 할당을 억제하기 위한 Shared Buffer Pattern 채택
- 전체 데이터 크기 N에 해당하는 단일 보조 배열(temp)을 최초 1회 할당하여 메모리 재사용성 극대화
- 원본 배열과 Shared Buffer 간의 포인터 기반 데이터 교환을 통한 메모리 복사 횟수 최소화
- 리스트 구조의 특성을 고려하여 Sequential Access 효율을 극대화한 병합 로직 구현
- 메모리 공간 복잡도를 엄격하게 O(N)으로 제한하여 런타임 안정성 확보
실천 포인트
1. 빈번한 Slice 생성/삭제가 발생하는 루프 내에서 메모리 할당 전략 검토
2. GC 부하 감소를 위해 사전 할당된 버퍼를 재사용하는 Pool 구조 적용 고려
3. 시간 복잡도 보장이 필수적인 시스템에서 QuickSort 대비 Merge Sort의 안정성 평가
4. Linked List와 같이 순차 접근이 유리한 데이터 구조에서의 정렬 알고리즘 선택