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.