Sobes.tech
Junior — Middle

Jak sloučit dva seřazené pole do jednoho, zachovávajíc pořadí prvků?

sobes.tech AI

Odpověď od AI

Pro sloučení dvou seřazených polí do jednoho seřazeného lze použít algoritmus sloučení, podobný tomu, který se používá v třídění sloučením (merge sort). Myšlenka je projít současně obě pole, porovnat aktuální prvky a přidat menší z nich do výsledného pole.

Pří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++
        }
    }

    // Přidat zbývající prvky
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Tato metoda pracuje v čase O(n + m), kde n a m jsou velikosti původních polí.