Algoritmos de pesquisa - Departamento de...
Transcript of Algoritmos de pesquisa - Departamento de...
![Page 1: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/1.jpg)
➔ Define-se pesquisa como a operação que permite encontrar ou concluir
que não existe, um dado elemento num dado conjunto.
➔ A pesquisa de um elemento pode ser feita num conjunto ordenado ou não.
➔ Quando o conjunto não está ordenado, o método usado é o exaustivo, que
consiste em percorrer sequencialmente todo o conjunto (desde o primeiro)
até se encontrar o elemento desejado ou, não o encontrando, se concluir
que não existe.
➔ Quando o conjunto está ordenado, existem vários métodos, como sejam
os de pesquisa sequencial e binária.
➔ No que se segue, considera-se que a ordenação é crescente.
Algoritmos de pesquisa
![Page 2: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/2.jpg)
Pesquisa exaustiva (algoritmo)
Pesquisar o elemento Elem no vector V de tamanho tam
k ← -1 // significa que Elem não foi encontrado em V
i ← 0Enquanto (i < tam) e (k = -1) Fazer
Se (V[i] = Elem) entãok ← i
senãoi ← i + 1
Se (k = -1) entãoElem não se encontra em V
senãoElem encontra-se na posição k
Algoritmos de pesquisa
![Page 3: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/3.jpg)
Pesquisa exaustiva (versão 1)
int PesquisaExaustiva (int Elem, int V[], int tam){
int i = 0, k = -1; // k = posição onde se encontra Elem em Vwhile ( (i < tam) && (k == -1) )
if (Elem == V[i])k = i;
elsei = i + 1;
if (k == -1)return (-1);
elsereturn (k);
}
Algoritmos de pesquisa
return (k);return (k);
}
![Page 4: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/4.jpg)
Pesquisa exaustiva (versão 2)
int PesquisaExaustiva (int Elem, int V[], int tam)
{
int i = 0;
while ( (i < tam) && (Elem != V[i]) )
i = i + 1;
if (i == tam)
return (-1);
else
return (i);
}
Algoritmos de pesquisa
![Page 5: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/5.jpg)
Pesquisa sequencial (algoritmo)
Pesquisar o elemento Elem no vector V de tamanho tam
k ← -1 // significa que Elem ainda não foi encontrado em Vi ← 0 // índice dos elementos do vector VEnquanto (i < tam) e (k = -1) Fazer
Se (V[i] = Elem) entãok ← i
senãoSe (V[i] < Elem) então
i ← i + 1senão
k ← -2; // significa que Elem não está em VSe (k ≥ 0) então
Elem encontra-se na posição ksenão
Elem não se encontra em V
Algoritmos de pesquisa
![Page 6: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/6.jpg)
Pesquisa sequencial (versão 1)
int PesquisaSequencial (int Elem, int V[], int tam){
int i = 0, k = -1; // k = posição onde se encontra Elem em Vwhile ( (i < tam) && (k == -1) )
if (Elem == V[i])k = i;
elseif (V[i] < Elem)
i = i + 1;else
k = -2;return (k);
}
Algoritmos de pesquisa
![Page 7: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/7.jpg)
Pesquisa sequencial (versão 2)
int PesquisaSequencial (int Elem, int V[], int tam)
{
int i = 0;
while ( (i < tam) && (V[i] < Elem) )
i = i + 1;
if ( (i < tam) && (Elem == V[i]) )
return (i);
else
return (-1);
}
Algoritmos de pesquisa
![Page 8: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/8.jpg)
Pesquisa binária (algoritmo)
➔ A ideia é comparar o elemento a pesquisar com o elemento que está ao
meio do vector e analisar 3 situações diferentes:
1ª) se aquele elemento é igual ao que está ao meio,
2ª) se aquele elemento está antes do meio,
3ª) se aquele elemento está depois do meio.
➔ Se aconteceu a 1ª situação, então foi encontrado o elemento e está no
vector naquela posição.
➔ Se aconteceu a 2ª situação, então basta pesquisar aquele elemento no
subvector até ao meio.
➔ Se aconteceu a 3ª situação, então basta pesquisar aquele elemento no
subvector do meio para a frente
Algoritmos de pesquisa
![Page 9: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/9.jpg)
Pesquisa binária (algoritmo iterativo)
Pesquisar o elemento Elem no vector V de tamanho taminicio ← 0fim ← tam - 1k ← -1 // k recebe a posição de Elem (no início presume-se que não está)Enquanto ( (inicio ≤ fim) e (k = -1) ) Fazer
meio ← (inicio + fim) / 2Se (Elem = V[meio]) então
k ← meiosenão
Se (Elem < V[meio]) entãofim ← meio – 1
senãoinicio ← meio + 1
Se (k ≥ 0) então Elem encontra-se em V na posição ksenão Elem não se encontra em V
Algoritmos de pesquisa
![Page 10: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/10.jpg)
Pesquisa binária (versão iterativa)
int PesquisaBinaria (int Elem, int V[], int tam){
int inicio = 0, fim = tam – 1, meio, k = -1;while ( (inicio <= fim) && (k == -1) ) {
meio = (inicio + fim) / 2;if (Elem == V[meio])
k = meio;else
if (Elem < V[meio])fim = meio - 1;
elseinicio = meio + 1;
}return (k);
}
Algoritmos de pesquisa
![Page 11: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/11.jpg)
Pesquisa binária (versão iterativa)
Valor a pesquisar: 34
Algoritmos de pesquisa
![Page 12: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/12.jpg)
Pesquisa binária (versão iterativa)
Valor a pesquisar: 34
1ª tentativa:
Algoritmos de pesquisa
![Page 13: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/13.jpg)
Pesquisa binária (versão iterativa)
2ª tentativa:
Algoritmos de pesquisa
![Page 14: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/14.jpg)
Pesquisa binária (versão iterativa)
2ª tentativa:
3ª tentativa:
Algoritmos de pesquisa
![Page 15: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/15.jpg)
Pesquisa binária (versão iterativa)
4ª tentativa:
Algoritmos de pesquisa
![Page 16: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/16.jpg)
Pesquisa binária (versão iterativa)
4ª tentativa:
O valor 34 foi encontrada após 4 tentativas
Algoritmos de pesquisa
![Page 17: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/17.jpg)
Pesquisa binária (versão iterativa)
Valor a pesquisar: 40
Algoritmos de pesquisa
![Page 18: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/18.jpg)
Pesquisa binária (versão iterativa)
Valor a pesquisar: 40
1ª tentativa:
Algoritmos de pesquisa
![Page 19: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/19.jpg)
Pesquisa binária (versão iterativa)
2ª tentativa:
Algoritmos de pesquisa
![Page 20: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/20.jpg)
Pesquisa binária (versão iterativa)
2ª tentativa:
3ª tentativa:
Algoritmos de pesquisa
![Page 21: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/21.jpg)
Pesquisa binária (versão iterativa)
4ª tentativa:
Algoritmos de pesquisa
![Page 22: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/22.jpg)
Pesquisa binária (versão iterativa)
5ª tentativa:
Algoritmos de pesquisa
![Page 23: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/23.jpg)
Pesquisa binária (versão iterativa)
6ª tentativa:
Algoritmos de pesquisa
![Page 24: Algoritmos de pesquisa - Departamento de Informáticacbarrico/Disciplinas/ProgramacaoAlgoritmos/... · Define-se pesquisa como a operação que permite encontrar ou concluir que não](https://reader030.fdocuments.net/reader030/viewer/2022020305/5c60182809d3f2560c8b474b/html5/thumbnails/24.jpg)
Pesquisa binária (versão iterativa)
6ª tentativa:
O valor 40 não está na lista,
o que se concluiu após 6 tentativas
Algoritmos de pesquisa