Sobes.tech
Middle — Senior

Ako implementovať zlúčenie dvoch zoradených polí do jedného zoradeného poľa?

sobes.tech AI

Odpoveď od AI

Na zlúčenie dvoch zoradených polí do jedného zoradeného poľa môžete použiť algoritmus zlúčenia podobný tomu, ktorý sa používa v zoradení spojením (merge sort).

Idea:

  • Prechádzať obe polia s dvoma indexami.
  • Pri každom kroku porovnať aktuálne prvky a pridať menší do výsledného poľa.
  • Keď jeden z poľ skončí, pridať zostávajúce prvky druhého poľa.

Príklad v Go:

func mergeSortedArrays(a, b []int) []int {
    result := make([]int, 0, len(a)+len(b))
    i, j := 0, 0

    for i < len(a) && j < len(b) {
        if a[i] < b[j] {
            result = append(result, a[i])
            i++
        } else {
            result = append(result, b[j])
            j++
        }
    }

    // Pridať zostávajúce prvky
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Tento algoritmus funguje v čase O(n + m), kde n a m sú veľkosti vstupných polí.