Este repositório contém implementações de uma variedade de algoritmos clássicos e comuns. Cada algoritmo é acompanhado de uma breve descrição e exemplos de uso, quando aplicável.
-
Prim's Algorithm: Um algoritmo de árvore de expansão mínima que encontra o subconjunto de arestas que forma uma árvore que inclui todos os vértices, onde o peso total da árvore é minimizado.
-
Kruskal's Algorithm: Um algoritmo de árvore de expansão mínima que encontra um subconjunto mínimo de arestas que conecta todos os vértices de um grafo ponderado.
-
Dijkstra's Algorithm: Um algoritmo para encontrar os caminhos mais curtos entre os nós em um grafo ponderado, que pode representar, por exemplo, distâncias rodoviárias entre cidades.
-
Bellman-Ford Algorithm: Um algoritmo de caminho mais curto que encontra o caminho mais curto em um grafo ponderado com arestas de peso negativo.
-
A Algorithm*: Um algoritmo de busca heurística que encontra o caminho mais curto entre um nó de origem e um nó de destino.
-
Binary Search Algorithm: Um algoritmo eficiente para encontrar o valor desejado em uma lista ordenada.
-
Linear Search Algorithm: Um algoritmo simples para encontrar um valor em uma lista, percorrendo-a sequencialmente.
-
Tree Sort Algorithm: Um algoritmo de ordenação que constrói uma árvore binária de busca a partir dos elementos a serem classificados.
-
Tim Sort Algorithm: Um algoritmo de ordenação híbrido derivado do merge sort e insertion sort, utilizado como algoritmo padrão de ordenação em Python.
-
Shell Sort Algorithm: Um algoritmo de ordenação eficiente, uma generalização do insertion sort que permite a troca de itens distantes.
-
Radix Sort Algorithm: Um algoritmo de ordenação não comparativo que classifica inteiros processando dígitos individuais.
-
Cube Sort Algorithm: Um algoritmo de ordenação que divide a lista em cubos e depois ordena os cubos.
-
Counting Sort Algorithm: Um algoritmo de ordenação eficiente, especialmente útil quando a faixa de valores a serem classificados é relativamente pequena.
-
Bucket Sort Algorithm: Um algoritmo de ordenação que funciona distribuindo os elementos de entrada em um número finito de "buckets" e depois ordenando cada bucket individualmente.
-
Heap Sort Algorithm: Um algoritmo de ordenação baseado em estrutura de dados heap.
-
Selection Sort Algorithm: Um algoritmo de ordenação simples que encontra o menor elemento da lista e o coloca na posição correta.
-
Insertion Sort Algorithm: Um algoritmo de ordenação eficiente que constrói a lista ordenada um elemento de cada vez.
-
Bubble Sort Algorithm: Um algoritmo de ordenação simples que compara cada par de elementos adjacentes e os troca se estiverem na ordem errada.
-
Quick Sort Algorithm: Um algoritmo de ordenação eficiente e flexível que utiliza a estratégia de divisão e conquista.
-
Merge Sort Algorithm: Um algoritmo de ordenação que divide a lista em sublistas, ordena essas sublistas e depois as mescla.
-
N-Queen Problem Algorithm: Um algoritmo que resolve o problema de colocar N rainhas em um tabuleiro de xadrez de tal forma que nenhuma rainha possa atacar outra.
-
Maze Solving Problem Algorithm: Um algoritmo que encontra um caminho ou solução para um labirinto.
-
MRU Cache Algorithm: Um algoritmo de substituição de cache que remove do cache o elemento que foi acessado mais recentemente.
-
LFU Cache Algorithm: Um algoritmo de substituição de cache que remove do cache o elemento menos frequentemente usado.
-
LRU Cache Algorithm: Um algoritmo de substituição de cache que remove do cache o elemento que foi menos recentemente usado.
-
Knight Tour Algorithm: Um algoritmo que resolve o problema do passeio do cavalo, que consiste em encontrar um caminho para o cavalo passar por todas as casas de um tabuleiro de xadrez exatamente uma vez.
-
Hamiltonian Path Algorithm: Um algoritmo que resolve o problema de encontrar um caminho que visite cada vértice de um grafo exatamente uma vez.
-
Ford Fulkerson Algorithm: Um algoritmo para encontrar o fluxo máximo em uma rede de fluxo.
-
Huffman Algorithm: Um algoritmo de compressão de dados que utiliza códigos de tamanho variável para representar os símbolos na fonte de dados.
-
CRC32 Algorithm: Um algoritmo de verificação de redundância cíclica (CRC) que produz um valor de verificação de 32 bits para dados de entrada.