A aula apresenta os métodos de pesquisa sequencial, ordenada e binária para buscar dados armazenados em vetores. A pesquisa sequencial verifica cada elemento linearmente. A ordenada reduz o tempo quando os dados estão ordenados. A binária é a mais eficiente, dividindo o vetor em metades a cada passo.
6. Busca
00:55
Definição
# Recuperação de dados armazenados em um repositório ou
base de dados
Tipo de busca depende dos dados
#Dados estão estruturados (vetor, lista, árvore)
#Dados ordenados (ou não ordenados)
#Valores duplicados
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
7. Busca
00:55
Baseada em uma chave
# A chave de busca é o campo do item utilizado para comparação
• Valor armazenado em um array de inteiros
• Campo de uma struct
• etc
# É por meio dela que sabemos se dado elemento é o que buscamos
• No caso do item estar presente no conjunto de elementos, seus dados são
retornados para o usuário
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
8. Tipos de busca e métodos abordados
00:55
Busca
# Dados armazenados em um vetor
# Dados ordenados
Métodos
# Busca Linear
# Busca Ordenada
# Busca Binária
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
10. Busca Linear
00:55
Basicamente, esse algoritmo percorre o array que contém os
dados desde a sua primeira posição até a última
Assume que os dados não estão ordenados, por isso a
necessidade de percorrer o array do seu início até o seu fim
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
11. Busca Linear: Funcionamento
00:55
Para cada posição do array, o algoritmo
compara se a posição atual do array é igual ao
valor buscado.
# Se os valores forem iguais, a busca termina
# caso contrário, a busca continua com a próxima posição do array
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
12. Busca Linear: Ilustrando o Funcionamento
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Busca Sequencial
15. Busca Linear: Complexidade
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Considerando um array com 𝑁 elementos
#𝑂(1), melhor caso: o elemento é o primeiro do array
#𝑂(𝑁), pior caso: o elemento é o último do array
#𝑂(𝑁/2), caso médio
17. Busca Sequencial Ordenada: Funcionamento
00:55
Assume que os dados estão ordenados
Se o elemento procurado for menor do que o valor em
uma determinada posição do array, temos a certeza de
que ele não estará no restante do array
#Isso evita a necessidade de percorrer o array do seu início até
o seu fim
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
18. Busca Sequencial Ordenada: Algoritmo
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
19. Busca Sequencial Ordenada: Exemplo
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
20. Busca Sequencial Ordenada: Desvantagens
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Ordenar um array também tem um custo
# Esse custo é superior ao custo da busca sequencial no seu pior caso
Se for para fazer a busca de um único elemento, não
compensa ordenar o array
# Porém, se mais de um elemento for recuperado do array, o esforço de
ordenar o array pode compensar
22. Busca Binária
00:55
A Busca Sequencial Ordenada é uma estratégia de busca
extremamente simples
# Ela percorre todo o array linearmente
# Não utiliza adequadamente a ordenação dos dados
Uma estratégia de busca mais sofisticada é a Busca Binária
# Muito mais eficiente do que a Busca Sequencial Ordenada
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
23. Busca Binária: Funcionamento
00:55
É uma estratégia baseada na idéia de dividir para conquistar
# A cada passo, esse algoritmo analisa o valor do meio do array
# Caso esse valor seja igual ao elemento procurado, a busca termina
# Caso contrário
• Se o elemento do meio vier antes da chave, então a busca continua na
metade posterior do vetor,
• Caso contrário, a busca continua na metade anterior do vetor.
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
24. Busca Binária: Ilustrando o Funcionamento
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Busca Binária
27. Busca Binária: Complexidade
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Considerando um array com 𝑁 elementos, o tempo de execução é:
# 𝑂(1), melhor caso: o elemento procurado está no meio do array;
# 𝑂(log2 𝑁), pior caso: o elemento não existe;
# 𝑂(log2 𝑁), caso médio.
29. 00:55
Busca em Vetor
de Struct
Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
30. Busca em Vetor de Struct
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
31. Busca em Vetor de Struct
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
32. Busca em Vetor de Struct
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
A busca é baseada em uma chave
# A chave de busca é o campo do item utilizado para comparação
• Valor armazenado em um array de inteiros
• Campo de uma struct
• etc
É por meio dela que sabemos se dado elemento é o que buscamos
No caso do item estar presente no conjunto de elementos, seus dados
são retornados para o usuário
33. Busca em Vetor de Struct
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)
Ou seja, devemos modificar o algoritmo para que a comparação das
chaves seja feita utilizando um determinado campo da struct
34. Busca em Vetor de Struct
00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)