Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)

40
# Pesquisa e Ordenação # Aula 12 – Pesquisa de Dados (Sequencial e Binária) Prof. Leinylson Fontinele Pereira

Transcript of Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)

# Pesquisa e Ordenação #Aula 12 – Pesquisa de Dados

(Sequencial e Binária)Prof. Leinylson Fontinele Pereira

Nas aulas anteriores...

Métodos de ordenação...

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

O que vamos aprender?

Pesquisa de dados # Sequencial

# Binário

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Vamos começar?

00:55 4Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

00:55

Busca

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca

00:55

Definição

# Recuperação de dados armazenados em um repositório oubase de dados

Tipo de busca depende dos dados

# Dados estão estruturados (vetor, lista, árvore)

# Dados ordenados (ou não ordenados)

# Valores duplicadosPesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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ãoretornados para o usuário

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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áriaPesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

00:55

Busca Linear

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Linear

00:55

Basicamente, esse algoritmo percorre o array que contém osdados desde a sua primeira posição até a última

Assume que os dados não estão ordenados, por isso anecessidade 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)

Busca Linear: Funcionamento

00:55

Para cada posição do array, o algoritmocompara se a posição atual do array é igual aovalor 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)

Busca Linear: Ilustrando o Funcionamento

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Sequencial

Busca Linear: Algoritmo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Linear: Exemplo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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

00:55

Busca Ordenada

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Sequencial Ordenada: Funcionamento

00:55

Assume que os dados estão ordenados

Se o elemento procurado for menor do que o valor emuma determinada posição do array, temos a certeza deque 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)

Busca Sequencial Ordenada: Algoritmo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Sequencial Ordenada: Exemplo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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ãocompensa ordenar o array# Porém, se mais de um elemento for recuperado do array, o esforço de

ordenar o array pode compensar

00:55

Busca Binária

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Binária

00:55

A Busca Sequencial Ordenada é uma estratégia de buscaextremamente 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)

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 nametade 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)

Busca Binária: Ilustrando o Funcionamento

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Binária

Busca Binária: Algoritmo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca Binária: Exemplo

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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.

Sequencial vs Binária

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

00:55

Busca em Vetor de Struct

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca em Vetor de Struct

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Busca em Vetor de Struct

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

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

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

Busca em Vetor de Struct

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Concluindo...

00:55 35Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Material: https://sites.google.com/site/leinylsonnassau

00:55

Aula baseada no material de:

Busca em arrays, Prof. André Backes

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Nesta aula aprendemos...

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Pesquisa de dados # Sequencial

# Binário

Na próxima aula veremos...

Pesquisa de dados# Hashing

00:55 Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

00:55

O Mês acabou, mas a luta contra o câncer não!

Pesquisa e Ordenação: Aula 12 – Pesquisa de Dados (Sequencial e Binária)

Alguma Dúvida?

00:55

Até a próxima aula...

[email protected]