Sobes.tech
Middle — Senior

Como implementar a fusão de duas matrizes ordenadas em uma matriz ordenada?

sobes.tech IA

Resposta da IA

Para fundir dois arrays ordenados em um único array ordenado, pode usar um algoritmo de fusão semelhante ao utilizado na ordenação por fusão (merge sort).

Ideia:

  • Percorrer ambos os arrays com dois índices.
  • A cada passo, comparar os elementos atuais e adicionar o menor ao array resultante.
  • Quando um dos arrays terminar, adicionar os elementos restantes do outro array.

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

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

    return result
}

Este algoritmo funciona em tempo O(n + m), onde n e m são os tamanhos dos arrays de entrada.