a

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

박은성/ 2022. 3. 15. 14:17
반응형

합병 정렬이란


분할 정복 알고리즘에서 부분문제의 수와 부분문제의 크기에 따라 분류된 정렬 알고리즘이 몇 개 있다.

그 중 하나가 합병/병합 정렬이다.

 

합병 정렬은 문제가 2개로 분할되고, 부분문제의 크기가 1/2로 감소하는 알고리즘이다. 즉 n개의 숫자들을 n/2개 씩 2개의 부분문제로 분할하고, 각각의 부분문제를 정렬한 후, 병합한다. 

 

합병(merge)란 2개의 정렬된 숫자들을 1개의 정렬된 숫자들로 합치는 것이다. 

 

 

알고리즘)

mergeSort(A, p, q)
input: A[p] ~ A[q] 
output: 정렬된 A[p] ~ A[q]

1. if( p < q ){
2.	  k = (p+q)/2        //k는 배열의 중간을 구함
3.    mergeSort(A, p, k) // 앞부분 배열
4.    mergeSort(A, k+1, q) //뒷부분 배열
5.    A[p] ~ A[k] 와 A[k+1] ~ A[q]를 병합한다.
 }

 

 

반응형