บทความนี้สาธิตวิธีการรวมอาร์เรย์สองอาร์เรย์ที่เรียงลำดับแล้ว โดยการสลับกันนำค่าไปใส่ (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 แทน