Como Estruturas de Dados e Algoritmos Definem a Performance dos Sistemas
Como a escolha da estrutura de dados adequada influencia diretamente a eficiência dos algoritmos e, consequentemente, o desempenho de um sistema.
Imagine uma grande biblioteca com milhares de livros espalhados pelo chão, sem nenhuma ordem. Um verdadeiro caos.
Sempre que você precisasse encontrar um título específico, perderia um bom tempo vasculhando o amontoado de livros até achar o certo.
Agora pense nessa mesma biblioteca, mas organizada: prateleiras divididas por gênero, seções de literatura brasileira e estrangeira e livros arrumados em ordem alfabética. De repente, a busca se torna simples, rápida e eficiente.
O que antes custava muito tempo, a organização reduz a instantes. E isso não funciona apenas com livros, aplica-se também nos sistemas computacionais.
Neste artigo, vamos explorar como a escolha da estrutura de dados adequada influencia diretamente a eficiência dos algoritmos e, consequentemente, o desempenho de um sistema.

Tipos de estruturas de dados
As estruturas de dados são a base da organização da informação em computação. Elas definem como os dados são armazenados, acessados e manipulados na memória.
1. Estruturas lineares
São consideradas estruturas lineares modelos de dados em que os elementos estão organizados de maneira sequencial, ou seja, um após o outro, formando uma espécie de linha.

Arrays, filas, pilhas e listas ligadas são alguns dos formatos mais comuns, cada um adequado a um tipo particular de problema.
2. Estruturas hierárquicas
Este modelo de estruturação de dados tem como fundamento a organização em forma de árvore, com níveis e relações entre "pai" e "filho".

Esse modelo é bastante usado em sistemas de arquivos, organogramas e algoritmos que dependem de relações de dependência.
3. Estruturas de associação
Esse modelo de estruturação de dados tem como objetivo principal criar vínculos diretos entre informações. Em vez de depender da posição sequencial (como nas lineares) ou da hierarquia de níveis (como nas árvores), a ênfase está na relação entre chave e valor.

Organizar os dados é apenas o começo. O próximo passo é definir a melhor estratégia para manipulá-los. E é aí que entram os algoritmos.
Algoritmos
Se as estruturas de dados representam a forma como a informação é organizada, os algoritmos são o conjunto de instruções que dizem o que fazer com esses dados.
Eles definem os passos necessários para resolver um problema, seja encontrar um elemento em uma lista, ordenar números ou calcular a rota mais curta entre dois pontos.
A eficiência de um algoritmo não depende apenas da sua lógica, mas também da estrutura sobre a qual ele é aplicado.
A busca binária, por exemplo, é extremamente rápida quando os dados estão organizados em uma estrutura ordenada, mas simplesmente não funciona em uma lista desordenada.
Medindo a complexidade de um algoritmo: notação Big O
A notação Big O é uma forma de medir a complexidade de um algoritmo. E é medida através da relação entre o tamanho da entrada e o crescimento do número de operações necessárias para determinar uma solução.

Ao constrário do que muitos pensam, a rapidez de um algoritmo não é medida através do tempo de execução, mas sim através do crescimento da curva do número de elementos da entrada em relação número de operações necessárias para determinar uma solução.
Como assim? Quanto mais vertical a curva, mais lento o algoritmo. Isso porque quanto maior o número de elementos da entrada, mais operações necessárias para determinar uma solução.
Sendo assim, algorítmos com tempo fatorial são os mais lentos, enquanto que algoritmos com tempo constante são os mais rápidos.
Conclusão
As estruturas de dados são metodologias que auxiliam na organização da informação em computação, elas poder seguir padrões lineares (arrays, filas, pilhas, listas ligadas), hierárquicos (árvores) ou de associação (dicionários, hashes).
Os algoritmos são instruções que definem os passos necessários para resolver um problema, seja encontrar um elemento em uma lista, ordenar números ou calcular a rota mais curta entre dois pontos.
A eficiência de um algoritmo não depende apenas da sua lógica, mas também da estrutura sobre a qual ele é aplicado. A notação Big O é uma forma de medir a complexidade de um algoritmo. E é medida através da relação entre o tamanho da entrada e o crescimento do número de operações necessárias para determinar uma solução.