더북(TheBook)

31.11 배열을 하나로 합치기: MERGE 알고리즘

병합(MERGE) 알고리즘은 배열 2개를 합쳐 하나로 만듭니다.

 

병합 알고리즘 사용하기

다음 예제는 오름차순으로 정렬된 두 정수 배열을 병합합니다. 처리 조건은 다음과 같습니다.

first 배열은 1~M, second 배열은 1~N 자료가 있습니다.

merge 배열은 M + N개가 있습니다.

i, j, k는 배열 첨자 변수로 사용됩니다.

 

다음 내용을 입력한 후 실행해 보세요.

오름차순으로 정렬된 두 정수 배열 병합: MergeAlgorithm.cs

using System;

class MergeAlgorithm
{
    static void Main()
    {
        //① 입력
        int[] first = { 1, 3, 5 };                   //오름차순 정렬됨
        int[] second = { 2, 4 };                     //오름차순 정렬됨
        int M = first.Length; int N = second.Length; //M:N 관행
        int[] merge = new int[M + N];                //병합된 배열
        int i = 0; int j = 0; int k = 0;             //i, j, k 관행

        //② 처리: MERGE
        while (i < M && j < N)                        //둘 중 하나라도 배열 끝에 도달할 때까지
        {
            if (first[i] <= second[j])                  //작은 값을 merge 배열에 저장
            {
                merge[k++] = first[i++];
            }
            else
            {
                merge[k++] = second[j++];
            }
        }
        while (i < M) //첫 번째 배열이 끝에 도달할 때까지
        {
        merge[k++] = first[i++];
        }
        while (j < N) //두 번째 배열이 끝에 도달할 때까지
        {
            merge[k++] = second[j++];
        }

        //③ 출력
        foreach (var m in merge)
        {
            Console.Write($"{m}\t");
        }
        Console.WriteLine();
    }
}

실행 결과

1     2     3     4     5

병합 알고리즘(병합 정렬 알고리즘) 공식과 같은 코드 형태입니다. 코드 내 주석을 읽으면서 직접 입력한 후 결과를 확인하길 권장합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.