Language-LAB/Algorithm

[알고리즘] 병합정렬 (Merge Sort)

JS LAB 2023. 7. 9. 01:23
728x90
반응형

병합정렬

분할 정복의 효과를 가장 잘 보여주는 대표적인 정렬 알고리즘

 

1.분할(Divide) : 

입력 리스트를 같은 크기의 2개의 부분 리스트로 분할한다.

 

2.정복(Conquer) : 

부분 리스트를 정렬한다

부분 리스트의 크기가 충분히 작지 않으면

순환 호출을 이용하여 다시 분할 정복 기법 적용

리스트의 크기가 1이면 이미 정렬 된 것!

 

3.병합(Combine, merge) : 

정렬된 부분 리스트들을 하나의 배열에 통합

 

알고리즘에서 실제로 정렬이 이루어지는 시점은 2개의 리스트를 병합하는 단계인 merge()이다

효율적인 병합을 위해서는 반드시 임시 리스트가 필요하다

병합은 각 부분 리스트의 첫 번째 항목부터 오른쪽으로 시작

두 부분 리스트의 항목 A[i] 와 A[j]를 비교하여 더 작은 요소를 먼저 새로운 리스트 sorted 에 복사

 

728x90
반응형