Estruturas de Dados Comuns
- Pillha: Coleção linear com operações de inserção e remoção realizadas em uma única extremidade.
- Fila: Coleção linear com inserção em uma extremidade e remoção na oposta.
- Vetor: Agrupamento ordenado de elementos do mesmo tipo em memória contígua.
- Lista Encadeada: Elementos armazenados em nós interligados, com alocação não contígua.
- Árvore: Estrutura hierárquica não linear com nós interconectados.
- Grafo: Rede de vértices conectados por arestas sem hierarquia fixa.
- Heap: Árvore binária especializada com propriedades de ordenação específicas.
- Tabela Hash: Mapeamento eficiente de chaves para valores usando funções de dispersão.
Operações Algorítmicas Básicas
- Busca: Localizar elementos que satisfaçam condições específicas
- Inserção: Adicionar novos elementos à estrutura
- Exclusão: Remover elementos existentes
- Atualização: Modiifcar valores de elementos
- Ordenação: Rearranjar elementos seguindo uma sequência lógica
Características Essenciais de Algoritmos
- Finitude: Execução concluída em passos limitados
- Determinismo: Instruções inequívocas e precisas
- Exequibilidade: Operações implementáveis com recursos disponíveis
- Entrada: Zero ou mais dados de processamento
- Saída: Resultados derivados das entradas
Métodos de Descrição Algorítmica
Pseudocódigo
Algoritmo EncontrarMaior
Entrada: x, y, z
Saída: maior_valor
1. Se x > y então
2. valor_temp = x
3. Senão
4. valor_temp = y
5. Fim Se
6. Se z > valor_temp então
7. maior_valor = z
8. Senão
9. maior_valor = valor_temp
10. Retorne maior_valor
Implementação em Código
def obter_maior(valor1, valor2, valor3):
candidato = valor1 if valor1 > valor2 else valor2
if valor3 > candidato:
return valor3
return candidato
print(obter_maior(12, 8, 15)) # Retorna 15
Análise de Eficiência Algorítmica
Complexidade Temporal
| Notação |
Exemplo |
Característica |
| O(1) |
Acesso direto |
Tempo constante |
| O(log n) |
Busca binária |
Divisão recorrente |
| O(n) |
Varredura linear |
Proporcional aos dados |
| O(n²) |
Ordenação por seleção |
Aninhamento quadrático |
Complexidade Espacial
// Exemplo O(1)
int encontrar_maximo(int arr[], int n) {
int max = arr[0]; // Espaço constante
for(int i=1; i<n; i++) {
if(arr[i] > max) max = arr[i];
}
return max;
}
// Exemplo O(n)
int* duplicar_array(int original[], int n) {
int* copia = malloc(n * sizeof(int)); // Alocação linear
for(int i=0; i<n; i++) {
copia[i] = original[i] * 2;
}
return copia;
}