Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 두 개의 정렬된 배열을 병합하는 방법

C#에서 두 개의 정렬된 배열 병합하기

C#에서 두 개의 정렬된 배열을 하나로 합치는 작업은 List<T>를 활용하면 매우 간단하게 처리할 수 있습니다. 이 글에서는 두 배열의 요소를 번갈아 가며 새로운 배열로 병합하는 방법을 단계별로 살펴보겠습니다.

1단계: 두 개의 정렬된 배열 준비

먼저 병합할 두 개의 정렬된 배열을 선언합니다.

int[] array1 = { 1, 2 };
int[] array2 = { 3, 4 };

2단계: 리스트에 요소를 추가하며 병합

두 배열의 요소를 List<int>에 번갈아 추가하여 하나의 리스트로 합칩니다.

var list = new List<int>();
for (int i = 0; i < array1.Length; i++) {
    list.Add(array1[i]);
    list.Add(array2[i]);
}

3단계: ToArray() 메서드로 다시 배열 변환

리스트를 배열로 되돌리려면 ToArray() 메서드를 사용하면 됩니다.

int[] array3 = list.ToArray();

전체 예제 코드

지금까지의 과정을 모두 포함한 완성된 코드는 다음과 같습니다.

using System;
using System.Collections.Generic;

public class Program {
    public static void Main() {
        int[] array1 = { 1, 2 };
        int[] array2 = { 3, 4 };
        var list = new List<int>();
        for (int i = 0; i < array1.Length; i++) {
            list.Add(array1[i]);
            list.Add(array2[i]);
        }
        int[] array3 = list.ToArray();
        foreach(int res in array3) {
            Console.WriteLine(res);
        }
    }
}

실행 결과

1
3
2
4

위 코드는 두 배열의 요소를 같은 인덱스끼리 번갈아 배치하는 방식이므로, 결과가 1, 3, 2, 4 순서로 출력됩니다. 즉, 두 배열을 교차(interleave)하면서 병합하는 형태입니다.

참고: 정렬 상태를 유지하며 병합하기

병합된 결과 역시 오름차순으로 정렬된 상태를 유지하고 싶다면, LINQ의 Concat()OrderBy()를 함께 사용하는 것이 더 효율적입니다.

int[] merged = array1.Concat(array2).OrderBy(x => x).ToArray();
// 결과: 1 2 3 4

이처럼 상황에 따라 단순 교차 병합과 정렬 유지 병합 중 목적에 맞는 방법을 선택하면 됩니다.