Algoritmos em Rust

40+ algoritmos implementados em Rust com explicações visuais, análise de complexidade e código completo. Ordenação, grafos, DP, strings e mais.

Algoritmos

Algoritmos em Rust

40+ algoritmos clássicos implementados em Rust — com explicações visuais, análise Big-O e código completo.

Domine algoritmos fundamentais usando Rust. Cada página inclui explicação do conceito, diagrama visual do funcionamento, análise de complexidade (tempo e espaço), implementação completa em Rust idiomático e exercícios práticos.

Categorias

Ordenação & Busca

Bubble Sort, Merge Sort, Quick Sort, Heap Sort, Binary Search e mais — os algoritmos fundamentais.

Grafos

BFS, DFS, Dijkstra, Bellman-Ford, Kruskal, Prim, ordenação topológica e caminhos mínimos.

Programação Dinâmica

Mochila, LCS, distância de edição, troco de moedas, subsequência crescente e mais clássicos de DP.

Algoritmos de Strings

KMP, Rabin-Karp, Trie, Aho-Corasick, suffix array, palíndromos e busca de padrões.

Matemática, Árvores & Avançado

BST, AVL, hash table, Union-Find, Segment Tree, crivo de Eratóstenes e exponenciação rápida.


Todos os Algoritmos

ordenação

Bubble Sort em Rust

O Bubble Sort (ordenação por bolha) é um dos algoritmos de ordenação mais simples e intuitivos que existem. Seu nome vem da analogia com bolhas de ar que sobem …

Leia mais
ordenação

Selection Sort em Rust

O Selection Sort (ordenação por seleção) é um algoritmo de ordenação simples que funciona de maneira intuitiva: a cada iteração, ele encontra o menor elemento …

Leia mais
ordenação

Insertion Sort em Rust

O Insertion Sort (ordenação por inserção) é um algoritmo de ordenação simples que constrói a sequência ordenada um elemento por vez. Sua lógica é similar à …

Leia mais
ordenação

Merge Sort em Rust

O Merge Sort (ordenação por intercalação) é um algoritmo de ordenação baseado na estratégia de divisão e conquista. Ele divide o vetor ao meio recursivamente …

Leia mais
ordenação

Quick Sort em Rust

O Quick Sort (ordenação rápida) é um dos algoritmos de ordenação mais utilizados na prática. Inventado por Tony Hoare em 1959, ele utiliza a estratégia de …

Leia mais
ordenação

Heap Sort em Rust

O Heap Sort (ordenação por heap) é um algoritmo de ordenação baseado na estrutura de dados heap binário. Ele funciona em duas fases: primeiro constrói um …

Leia mais
busca

Busca Binária em Rust

A Busca Binária (binary search) é um dos algoritmos mais fundamentais e eficientes da computação. Ela encontra a posição de um elemento em um vetor ordenado …

Leia mais
rust

Busca em Largura (BFS) em Rust

A Busca em Largura (Breadth-First Search, ou BFS) é um dos algoritmos fundamentais para exploração de grafos. Ela percorre todos os vértices de um grafo nível …

Leia mais
rust

Busca em Profundidade (DFS) em Rust

A Busca em Profundidade (Depth-First Search, ou DFS) é um algoritmo de exploração de grafos que avança o mais fundo possível em cada ramo antes de retroceder …

Leia mais
rust

Algoritmo de Dijkstra em Rust

O algoritmo de Dijkstra é o método mais eficiente para encontrar o caminho mais curto de um vértice de origem a todos os outros vértices em um grafo com pesos …

Leia mais
rust

Algoritmo de Bellman-Ford em Rust

O algoritmo de Bellman-Ford resolve o problema do caminho mais curto a partir de uma única fonte em grafos que podem conter arestas com peso negativo — uma …

Leia mais
rust

Algoritmo de Kruskal em Rust

O algoritmo de Kruskal encontra a Árvore Geradora Mínima (Minimum Spanning Tree, ou MST) de um grafo conectado e ponderado. A MST é um subconjunto de arestas …

Leia mais
rust

Algoritmo de Prim em Rust

O algoritmo de Prim é uma abordagem gulosa para encontrar a Árvore Geradora Mínima (MST) de um grafo conectado e ponderado. Diferente do Kruskal, que trabalha …

Leia mais
rust

Ordenação Topológica em Rust

A Ordenação Topológica (Topological Sort) é um algoritmo que organiza os vértices de um Grafo Acíclico Direcionado (DAG — Directed Acyclic Graph) em uma …

Leia mais
programação dinâmica

Fibonacci com Programação Dinâmica

A sequência de Fibonacci é o ponto de partida clássico para aprender programação dinâmica (DP). Embora o problema em si seja simples — cada número é a …

Leia mais
programação dinâmica

Problema da Mochila (Knapsack) em Rust

O problema da mochila (Knapsack) é um dos problemas mais estudados em otimização combinatória e ciência da computação. Dado um conjunto de itens, cada um com …

Leia mais
programação dinâmica

Subsequência Comum Mais Longa (LCS)

A Subsequência Comum Mais Longa (LCS — Longest Common Subsequence) é um dos problemas clássicos de programação dinâmica sobre strings. Dadas duas sequências, …

Leia mais
programação dinâmica

Problema do Troco de Moedas em Rust

O problema do troco de moedas é um clássico de programação dinâmica com aplicação direta no mundo real: dado um conjunto de denominações de moedas e um valor …

Leia mais
programação dinâmica

Subsequência Crescente Mais Longa (LIS)

A Subsequência Crescente Mais Longa (LIS — Longest Increasing Subsequence) é um dos problemas clássicos de programação dinâmica. Dado um array de números, …

Leia mais
programação dinâmica

Multiplicação de Cadeia de Matrizes

O problema da Multiplicação de Cadeia de Matrizes (Matrix Chain Multiplication) pergunta: dada uma sequência de matrizes a serem multiplicadas, qual a ordem de …

Leia mais
strings

Algoritmo KMP em Rust

O algoritmo de Knuth-Morris-Pratt (KMP) resolve o problema clássico de busca de padrões em texto: dado um texto T de comprimento n e um padrão P de comprimento …

Leia mais
strings

Algoritmo Rabin-Karp em Rust

O algoritmo Rabin-Karp resolve o problema de busca de padroes em texto usando uma abordagem baseada em hashing. Em vez de comparar caractere por caractere, ele …

Leia mais
strings

Trie (Arvore de Prefixos) em Rust

A Trie (pronuncia-se “trai”, de retrieval) e uma estrutura de dados em arvore especializada para armazenar e buscar strings de forma extremamente …

Leia mais
strings

Algoritmo Aho-Corasick em Rust

O algoritmo de Aho-Corasick resolve um dos problemas mais importantes em processamento de texto: buscar multiplos padroes simultaneamente em um texto. Enquanto …

Leia mais
strings

Suffix Array em Rust

O Suffix Array (array de sufixos) e uma estrutura de dados que armazena todos os sufixos de uma string em ordem lexicografica. E uma alternativa eficiente em …

Leia mais
strings

Algoritmo de Manacher em Rust

O algoritmo de Manacher resolve o problema de encontrar a maior substring palindromica em tempo linear O(n). Um palindromo e uma string que se le da mesma forma …

Leia mais
strings

Distancia de Levenshtein em Rust

A Distancia de Levenshtein (ou distancia de edicao) mede o numero minimo de operacoes de edicao necessarias para transformar uma string em outra. As operacoes …

Leia mais
strings

Hashing de Strings em Rust

O hashing de strings e uma tecnica fundamental que permite comparar strings e substrings em tempo constante O(1) apos um pre-processamento linear. Em vez de …

Leia mais
árvore

Árvore AVL em Rust

A Árvore AVL (nomeada em homenagem aos inventores Adelson-Velsky e Landis, 1962) é uma árvore binária de busca auto-balanceada. A diferença fundamental em …

Leia mais
hash

Tabela Hash do Zero em Rust

A Tabela Hash (Hash Table) é uma das estruturas de dados mais utilizadas na programação, oferecendo acesso em tempo O(1) amortizado para inserção, busca e …

Leia mais
union-find

Union-Find (Disjoint Set) em Rust

O Union-Find (também chamado de Disjoint Set Union, ou DSU) é uma estrutura de dados que gerencia uma coleção de conjuntos disjuntos (sem elementos em comum). …

Leia mais
segment-tree

Segment Tree em Rust

A Segment Tree (Árvore de Segmentos) é uma estrutura de dados que permite realizar consultas de intervalo (range queries) e atualizações de forma eficiente. …

Leia mais
primos

Crivo de Eratóstenes em Rust

O Crivo de Eratóstenes e um dos algoritmos mais antigos e elegantes da matemática, criado pelo matemático grego Eratóstenes por volta de 240 a.C. Ele encontra …

Leia mais
matemática

Algoritmo de Euclides (MDC) em Rust

O Algoritmo de Euclides é um dos algoritmos mais antigos que ainda é amplamente utilizado, datando dos Elementos de Euclides por volta de 300 a.C. Ele calcula o …

Leia mais
matemática

Exponenciação Rápida em Rust

A Exponenciação Rápida (também chamada de exponenciação por quadratura ou binary exponentiation) é uma técnica que calcula a^n em apenas O(log n) …

Leia mais