Implementando algoritmo de bubble sort

Hoje começamos uma nova série no nosso canal do YouTube, onde vamos implementar vários algoritmos.

Nesse primeiro vídeo, implementamos o algoritmo de ordenação bubble sort.

Deixem suas dúvidas nos comentários.

Até a próxima!


Se inscreva na nossa newsletter

* indicates required

Conhecendo estruturas de dados: Queue (fila)

Depois de ter falado sobre a estrutura de dados Stack (pilha) no último post da série, nada melhor do que dar continuidade a série falando de Queue (fila), sua famosa irmã e amiga nas confusões do.. “É FIFO ou é LIFO?”.

Queue ou fila, é uma estrutura de dados muito similar a Stack (pilha), o que acaba gerando confusão. A diferença básica entre elas é a ordem na qual seus itens são consumidos, pois ao contrário da Stack, a Queue sempre vai consumir os itens na ordem que foram inseridos.

AlgoritmoBig O
EspaçoO(n)
BuscaO(n)
InsertO(1)
DeleteO(1)
time complexity
Leia mais »

Conhecendo estruturas de dados: Stack

Stack ou pilha, é uma das estruturas de dados mais famosas e uma das mais confundidas também, afinal quem nunca falou… “Sei sim, ela é FIFO… não, LIFO… não, calma”

Uma das primeiras vezes que se viu falar sobre pilha na literatura foi em 1946, quando ninguém mais, ninguém menos que Alan M. Turing usou os termos “bury” e “unbury” como uma forma de chamar e retornar valores de sub-rotinas.

No entanto, embora ele descreve-se o processo, a ideia da criação da estrutura de dados com o nome que conhecemos hoje foi proposta somente em 1955 por Klaus Samelson e Friedrich L. Bauer da Universidade Técnica de Munique.

Uma pilha tem um tamanho definido e somente dois métodos, sendo um para adicionar item, normalmente chamado de push, e outro chamado pop para recuperar/remover.

Leia mais »

Otimizando funções com memoize

Em ciência da computação, memoize ou memoization é uma técnica de otimização que faz um cache do resultado de uma função com base nos parâmetros passados para ela.

Essa técnica faz com que a execução real da função só aconteça a primeira vez que o parâmetro ou conjunto de parâmetros é passado, pois como fará um cache do resultado, ao receber os mesmos parâmetros, retornará o valor que está armazenado no cache.

Antes de utilizar a técnica, vamos criar duas funções. A Primeira para calcular o fatorial de um número.

func fatorial(n int) int {
    total := 1
    for i := 2; i <= n; i++ {
        total *= i
    }

    return total
}
Leia mais »

Entenda a diferença entre concorrência e paralelismo

Na próxima semana vou fazer um post falando sobre go routines, por isso hoje vamos entender o conceito que há por trás dessas crianças.

Embora algumas pessoas usem os dois termos para descrever a mesma coisa, eles com certeza não são. Particularmente, eu sempre dizia que Go executava suas go routines em paralelo, o que faz alusão a serem executadas com paralelismo, o que é uma grande mentira já que que Go é uma linguagem que trabalha com concorrência e não paralelismo.

Mas afinal o que isso quer dizer e qual a diferença?

Concorrência é basicamente a capacidade de lidar com várias coisas de uma só vez, enquanto paralelismo é a capacidade de lidar com várias coisas ao mesmo tempo.

Se você achou que parece ser a mesma coisa, calma… vamos dar um exemplo para tentar deixar mais claro.

Leia mais »