Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การรวมอาร์เรย์ที่เรียงลำดับแล้วสองอาร์เรย์ใน C# (Interleaving Merge)

บทความนี้สาธิตวิธีการรวมอาร์เรย์สองอาร์เรย์ที่เรียงลำดับแล้ว โดยการสลับกันนำค่าไปใส่ (Interleaving) ไม่ใช่การ Merge แบบเรียงลำดับปกติ (Sorted Merge)

ความแตกต่างสำคัญ

ประเภทคำอธิบายตัวอย่างผลลัพธ์
Interleaving (บทความนี้)สลับค่าระหว่างสองอาร์เรย์[1, 3, 2, 4]
Sorted Mergeรวมแล้วเรียงลำดับใหม่[1, 2, 3, 4]

ตัวอย่างโค้ด

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();

        // สมมติว่าทั้งสองอาร์เรย์มีขนาดเท่ากัน
        for (int i = 0; i < array1.Length; i++)
        {
            list.Add(array1[i]);
            list.Add(array2[i]);
        }

        int[] merged = list.ToArray();

        foreach (int val in merged)
            Console.WriteLine(val);
    }
}

ผลลัพธ์

1
3
2
4

เวอร์ชันที่ทนทานกว่า (รองรับขนาดต่างกัน)

public static int[] InterleaveArrays(int[] arr1, int[] arr2)
{
    var result = new List();
    int maxLen = Math.Max(arr1.Length, arr2.Length);

    for (int i = 0; i < maxLen; i++)
    {
        if (i < arr1.Length) result.Add(arr1[i]);
        if (i < arr2.Length) result.Add(arr2[i]);
    }

    return result.ToArray();
}

กรณีการใช้งาน

  • การผสานข้อมูลจากเซ็นเซอร์สองตัวที่อ่านค่าสลับกัน
  • การสร้างข้อมูลทดสอบ (Test Data Generation)
  • อัลกอริทึมการ์ด (Perfect Shuffle)
  • การประมวลผลสัญญาณ (Signal Processing) - Interleaving Channels

ข้อควรระวัง

วิธีนี้ ไม่ใช่ Merge Sort แบบคลาสสิก หากต้องการรวมอาร์เรย์ที่เรียงลำดับแล้วให้ได้อาร์เรย์เรียงลำดับ ต้องใช้ Two-Pointer Technique แทน