Array
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ção | Complexidade |
|---|---|
| Acesso | O(1) |
| Busca | O(n) |
| Inserção início | O(n) |
| Inserção fim | O(1)* |
| Remoção início | O(n) |
| Remoção fim | O(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 dinamicamentePython - Lista (Array Dinâmico)
lista = [] # Estrutura dinâmica
lista.append(10) # Pode crescer dinamicamenteQuando 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
- [Arrays e Listas Encadeadas] - Comparação detalhada entre arrays e listas encadeadas
- [Big-O-Notation] - Entendendo complexidade de algoritmos