loopinfinito
Voltar aos posts
programação

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.

4 min
Yale Araújo

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.

Estruturas de dados

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.

Estruturas de dados lineares

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".

Estruturas de dados hierárquicas

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.

Estruturas de dados de associação

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.

Notação Big 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.