Este repositório consolida implementações de algoritmos clássicos e estruturas de dados em linguagem C. O objetivo é demonstrar domínio sobre lógica de programação, gerenciamento de memória (ponteiros e alocação dinâmica) e análise de complexidade computacional.
A base teórica destas implementações é fundamentada na literatura clássica da área, incluindo conceitos do livro Entendendo Algoritmos (Aditya Bhargava) e aplicações acadêmicas rigorosas.
Um algoritmo de busca eficiente utilizado em listas ordenadas. Ele divide repetidamente a lista ao meio, comparando o valor procurado com o elemento central, descartando a metade onde o valor não pode estar.
- Complexidade de Tempo:
O(log n). É exponencialmente mais rápida do que a busca linear em grandes volumes de dados.
A recursividade é uma técnica onde uma função chama a si mesma para resolver um problema quebrando-o em instâncias menores, sempre com casos base bem definidos para evitar loops infinitos.
- Fibonacci: Implementação clássica da sequência matemática. Embora elegante, a abordagem estritamente recursiva sem memoização recalcula os mesmos valores várias vezes, o que serve como um excelente estudo de caso para otimização de algoritmos.
Estruturas de dados lineares compostas por elementos chamados "nós". Cada nó contém um valor e um ponteiro para o próximo nó.
- Por que usar: Permite a alocação dinâmica de memória em tempo de execução. Ao contrário de arrays estáticos, facilitam inserções e remoções eficientes de elementos, sendo ideais para conjuntos de dados de tamanho variável, exigindo um controle rigoroso de ponteiros.
Como a linguagem C é compilada, você precisará do compilador GCC (GNU Compiler Collection) para transformar o código-fonte (.c) em linguagem de máquina executável.
1. Clone o repositório:
git clone [https://github.com/Kauandugi/c-algorithms-foundations.git](https://github.com/Kauandugi/c-algorithms-foundations.git)
cd c-algorithms-foundations