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
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 maisSelection 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 maisInsertion 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 maisMerge 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 maisQuick 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 maisHeap 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 maisBusca 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 maisBusca Linear e Interpolação em Rust
Nem toda busca pode (ou deve) usar a estratégia binária. A Busca Linear (sequential search) é o algoritmo de busca mais simples e fundamental: percorre os …
Leia maisBusca 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 maisBusca 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 maisAlgoritmo 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 maisAlgoritmo 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 maisAlgoritmo 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 maisAlgoritmo 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 maisOrdenaçã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 maisAlgoritmo de Floyd-Warshall em Rust
O algoritmo de Floyd-Warshall encontra o caminho mais curto entre todos os pares de vértices de um grafo ponderado em uma única execução. Diferente do Dijkstra …
Leia maisFibonacci 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 maisProblema 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 maisSubsequê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 maisDistância de Edição (Levenshtein) em Rust
A distância de edição (ou distância de Levenshtein) mede o número mínimo de operações necessárias para transformar uma string em outra. As operações permitidas …
Leia maisProblema 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 maisSubsequê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 maisMultiplicaçã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 maisProblema da Soma de Subconjuntos em Rust
O problema da soma de subconjuntos (Subset Sum) é um clássico de programação dinâmica e teoria da complexidade: dado um conjunto de inteiros positivos e um …
Leia maisAlgoritmo 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 …
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 maisTrie (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 maisAlgoritmo 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 maisSuffix 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 maisAlgoritmo 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 maisDistancia 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 maisHashing 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 Binária de Busca (BST) em Rust
A Árvore Binária de Busca (Binary Search Tree, ou BST) é uma das estruturas de dados mais fundamentais da ciência da computação. Ela organiza elementos de forma …
Leia maisÁ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 maisTabela 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 maisUnion-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 maisSegment 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 maisCrivo 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 maisAlgoritmo 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 maisExponenciaçã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) …