logotipo Blog Giovani Da Cruz
Algoritmos com Vetores

Mediana de dois arrays ordenados em Go

3 min de leitura 81 visualizações

Mediana de Dois Arrays Ordenados em Go

Introdução

Você está aprendendo Go e quer aprimorar suas habilidades com algoritmos e estruturas de dados? Neste artigo, vamos explorar um problema interessante: como encontrar a mediana de dois arrays ordenados usando a linguagem Go. Este exercício não só ajudará você a entender melhor o uso de slices (a implementação de vetores em Go), mas também aprimorará suas habilidades de resolução de problemas.

 

O Problema: Mediana de Dois Arrays Ordenados

Descrição do Problema

Dado dois arrays ordenados de números inteiros, implemente uma função que encontre a mediana dos dois arrays quando mesclados.

Exemplo

Entrada:

  • array1 = [1, 3, 5]
  • array2 = [2, 4, 6]

Saída: 3.5

Explicação: Ao mesclar os arrays, obtemos [1, 2, 3, 4, 5, 6]. A mediana é (3 + 4) / 2 = 3.5.

 

Solução em Go

Vamos implementar uma solução para este problema usando Go. Embora a solução ideal tenha uma complexidade de tempo O(log(m+n)), nossa implementação inicial terá uma complexidade de O((m+n)log(m+n)) para fins didáticos.

package main

import (
    "fmt"
    "sort"
)

func encontrarMedianaArraysOrdenados(nums1, nums2 []int) float64 {
    // Mescla os dois arrays ordenados
    mesclado := make([]int, len(nums1)+len(nums2))
    copy(mesclado, nums1)
    mesclado = append(mesclado, nums2...)

    // Ordena o array mesclado
    sort.Ints(mesclado)

    // Encontra a mediana
    n := len(mesclado)
    if n%2 == 0 {
        // Se o número de elementos for par, calcula a média dos dois elementos do meio
        return float64(mesclado[n/2-1]+mesclado[n/2]) / 2.0
    } else {
        // Se o número de elementos for ímpar, retorna o elemento do meio
        return float64(mesclado[n/2])
    }
}

func main() {
    nums1 := []int{1, 3, 5}
    nums2 := []int{2, 4, 6}

    mediana := encontrarMedianaArraysOrdenados(nums1, nums2)
    fmt.Printf("A mediana de %v e %v é: %.2f\n", nums1, nums2, mediana)
}

Explicação do Código

  1. Mesclagem dos Arrays: Criamos um novo slice mesclado com capacidade para ambos os arrays de entrada. Copiamos nums1 para mesclado e depois anexamos nums2.
  2. Ordenação: Utilizamos a função sort.Ints() do Go para ordenar o array mesclado.
  3. Cálculo da Mediana: Verificamos se o comprimento do array mesclado é par ou ímpar:
    • Se for par, retornamos a média dos dois elementos do meio.
    • Se for ímpar, retornamos o elemento do meio.
  4. Função Principal: Demonstra o uso do algoritmo com dois arrays de exemplo.

 

Considerações Finais

Este algoritmo, embora não seja a solução mais eficiente, é uma excelente introdução ao trabalho com slices em Go e à resolução de problemas algorítmicos. Para aplicações com grandes volumes de dados, seria necessário implementar uma solução mais otimizada usando busca binária.

Praticar com exercícios como este é fundamental para desenvolver suas habilidades em programação Go e algoritmos. Continue explorando e aprimorando suas habilidades!

 

 

💬 Queremos ouvir de você! 💬

Vamos discutir nos comentários: Qual foi o algoritmo mais desafiador que você já implementou em Go? 💬👇

 

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até a próxima e feliz leitura! 👋📖

 

#Go #Golang #Algoritmos #ProgramaçãoGo #AprendizagemDeMáquina

#DesenvolvimentoDeEngenheiros #TechBrasil #CodingChallenge #DataStructures

#GiovaniDaCruz

 

Deixe um comentário

Seu e-mail não será publicado.