ⓐif문은 '배열 원소가 둘 이상이면'의 의미를 나타냄 ⓑ둘 이상이면 그 배열의 중간위치를 구하고
ⓒ분할된 왼쪽의 부분배열에 대하여 MergeSort를 순환 호출하여 정렬하고, 왼쪽 부분배열의 정렬이 끝났으면
ⓓ오른쪽 부분배열에 대하여 MergeSort를 순환
호출하여 오른쪽 부분배열을 정렬함
ⓔ왼쪽과 오른쪽이 끝났으면 이들을 Merge함

②③④⑤줄의 while 루프는 머지가 진행되고 있는 두 부분배열 모두에 아직 키가 남아 있을 때, 이들을 머지

⑥⑦⑧⑨⑩줄의 if문은 두 부분배열 중에서 한 개의 배열에만 키가 남아 있을 때 이 키들을 배열 B의 머지된 원소들 뒤에 그대로 복사하는 일

⑪⑫ for루프는 머지가 끝나면 배열 B에 있는 정렬된 키들을 배열 A에 옮기는 일을 담당

10개의 키가 있는 배열에머지 정렬을 적용하는 과정

|머지정렬 개념 | 머지정렬 알고리즘| 머지정렬 분석 |

머지 정렬 알고리즘

 

 

-------------------------------------------------------------------------------

   void MergeSort(int A[ ], int Low, int High) /* 입력: A[Low:High] - 정렬하려는 배열 */

   /* Low, High - 정렬할 원소가 있는 곳을 나타내는 최소, 최대 인덱스 */

   /* 출력: A[Low:High] - 정렬된 배열 */

       {               

              int Mid;     

 /*a*/    if(Low < High)

              {

/*b*/           Mid = (Low + High)/2;

/*c*/           MergeSort(A[ ], Low, Mid);

/*d*/           MergeSort(A[ ], Mid+1, High);

/*e*/           Merge(A[ ], Low, Mid, High);

               }

       }                                                                   /*  머지 정렬 알고리즘 */

 

   void Merge(int A[ ], int Low, int Mid, int High)

   /* 입력: A[Low:Mid], A[Mid+1:High] - 정렬된 두 배열 */

   /* 출력: A[Low:High]-A[Low:Mid]와 A[Mid+1:High]를  합병하여 정렬된 배열 */

             { 

                  int B[NUM_OF_KEYS];

                  int i, LeftPtr, RightPtr, BufPtr;

/*1*/        LeftPtr = Low; RightPtr = Mid + 1; BufPtr = Low;

/*2*/        while(LeftPtr <= Mid && RightPtr <= High)

/*3*/               if(A[LeftPtr] < A[RightPtr])

/*4*/                    B[BufPtr++] = A[LeftPtr++];    

/*5*/               else B[BufPtr++] = A[RightPtr++];

/*6*/         if (LeftPtr > Mid)

/*7*/               for (i = RightPtr; i <= High; i++)

/*8*/                    B[BufPtr++] = A[i];

                 else    

/*9*/             for (i=LeftPtr; i <= Mid; i++)

/*10*/                  B[BufPtr++] = A[i];

/*11*/       for (i = Low; i <= High; i++)

/*12*/            A[i] = B[i];             

             }                                                          /* 머지 알고리즘  */

-------------------------------------------------------------------------------