Array

estrutura_de_dados algoritmos

Array é muitas vezes mal compreendido dentro do contexto de programação. Acredito que isso ocorra porque o que descrevemos como um array, por exemplo:

const array = [];

Não é exatamente um array “puro”, e sim uma estrutura de dados que apresenta algumas características de array.


O que é Array?

  • Array nada mais é que um espaço contínuo em memória, isso é descrito dentro do livro Arrays e Listas Encadeadas|Aprendendo Algoritmos de forma bem instrutiva.

  • Isso é mais fácil de entender quando instanciamos um array em linguagens de mais baixo nível, como C ou C++, onde você precisa definir o tamanho do array antecipadamente.


Características Fundamentais

Memória Contígua

  • Os elementos são armazenados sequencialmente na memória
  • Cada elemento ocupa um espaço fixo e previsível
  • O endereço de qualquer elemento pode ser calculado: endereço_base + (índice × tamanho_elemento)

Acesso Direto O(1)

  • Você pode acessar qualquer elemento instantaneamente se souber sua posição (índice)
  • Exemplo: array[5] acessa diretamente o 6º elemento

Tamanho Fixo (em linguagens de baixo nível)

  • Em C/C++, o tamanho do array deve ser definido na criação
  • Em JavaScript/Python, os “arrays” são estruturas dinâmicas mais complexas

Complexidade de Operações

OperaçãoComplexidade
AcessoO(1)
BuscaO(n)
Inserção inícioO(n)
Inserção fimO(1)*
Remoção inícioO(n)
Remoção fimO(1)*

*Desde que haja espaço disponível


Arrays em Diferentes Linguagens

C/C++ - Array Tradicional

int numeros[5]; // Array fixo de 5 inteiros
numeros[0] = 10;

JavaScript - Array Dinâmico

const array = []; // Estrutura dinâmica
array.push(10);   // Pode crescer dinamicamente

Python - Lista (Array Dinâmico)

lista = []        # Estrutura dinâmica
lista.append(10)  # Pode crescer dinamicamente

Quando Usar Arrays?

Use quando:

  • Você precisa de acesso rápido por índice
  • O tamanho é conhecido ou muda pouco
  • Acesso sequencial é comum

Evite quando:

  • Inserções/remoções frequentes no início ou meio
  • Tamanho varia muito dinamicamente
  • Necessita de estrutura mais flexível

Referências Cruzadas