Sobes.tech
Junior — Middle

Como pode fundir dois arrays ordenados em um, mantendo a ordem dos elementos?

sobes.tech IA

Resposta da IA

Para fundir dois arrays ordenados num único array ordenado, pode usar um algoritmo de fusão semelhante ao utilizado na ordenação por fusão (merge sort). A ideia é percorrer simultaneamente ambos os arrays, comparando os elementos atuais, e adicionar o menor deles ao array resultante.

Exemplo em 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++
        }
    }

    // Adiciona os elementos restantes
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Este método funciona em tempo O(n + m), onde n e m são os tamanhos dos arrays originais.