Você está na página 1de 33

Algoritmos de

Pesquisa

Trabalho realizado por:


Ana Paula Silva nº 15649
EPGI
Sumário:

 Definição de algoritmo de pesquisa

 Tipos de Pesquisa
- Pesquisa Sequencial

- Pesquisa Binária

 Conclusão
Conceito de algoritmo de pesquisa

Os algoritmos de pesquisa são algoritmos que :

 Permitem ao utilizador, ter acesso à informação


independentemente da forma como esta se encontra
armazenada.

Efectuam a pesquisa de um ou mais elementos

Podem ser aplicados a diferentes tipos de dados:

-Números

- Strings
Tipos de Pesquisa

• Sequencial
Algoritmo
de
pesquisa
• Binária
Pesquisa sequencial

 Método intuitivo e simples

 Utilizado para determinar a presença de um ou


vários elementos numa sequência, onde os dados
não se encontram ordenados

A ideia base: Percorrer o vector, comparando os


elementos que o constituem, com o elemento
procurado.
Funcionamento

A pesquisa inicia-se no primeiro elemento do vector

Este vai percorrendo todo o vector com n elementos,


efectuando comparações para cada posição i, v[i]= x:

-Se o elemento procurado (x) existe, mostra-se


a sua posição ou o total de ocorrências deste
no vector.

- Se o elemento procurado (x) não existe,


mostra-se uma mensagem de falha
Pesquisa Sequencial

Exemplo1: Procurar o número “7” no vector seguinte

2 9 7 4 1

1ªiteração: 7 Condição Falsa


Pesquisa Sequencial

Exemplo1: Procurar o número “7” no vector seguinte

2 9 7 4 1

2ªiteração: 7 Condição Falsa


Pesquisa Sequencial

Exemplo1: Procurar o número “7” no vector seguinte

2 9 7 4 1

3ªiteração: 7 Condição verdadeira

Pesquisa com sucesso


Pesquisa Sequencial
Exemplo 2: Procurar o número “5” no vector seguinte

2 9 7 4 1

1ªiteração 5 Condição Falsa


Pesquisa Sequencial
Exemplo 2: Procurar o número “5” no vector seguinte

2 9 7 4 1

2ªiteração 5 Condição Falsa


Pesquisa Sequencial
Exemplo 2: Procurar o número “5” no vector seguinte

2 9 7 4 1

3ªiteração 5 Condição Falsa


Pesquisa Sequencial
Exemplo 2: Procurar o número “5” no vector seguinte

2 9 7 4 1

5 Condição Falsa
4ªiteração
Pesquisa Sequencial
Exemplo 2: Procurar o número “5” no vector seguinte

2 9 7 4 1

5ªiteração 5 Condição Falsa

Pesquisa sem sucesso


Implementação

int SequentialSearch(const int v[], int


n, int x)
{
int i;
for (i = 0; i < n; i++)
if (v[i] == x)
return i; // encontrou
return -1; // não encontrou
}
Pesquisa Binária

 Método simples, mas muito eficiente de pesquisa.

 Aplicado a conjuntos de dados ordenados.

A ideia base: consiste em ir dividindo o intervalo de


busca ao meio, de forma a torna-lo mais pequeno.
Funcionamento
Após os dados se encontrarem ordenados, para
efectuar a pesquisar de um elemento, temos:

1. Identificar o elemento central


(Meio = (Esq+Dir) div2)
Esq. Meio Dir.

2. Comparar o elemento a
procurar com o elemento do
x == V [Meio] ?
meio

Caso a condição seja verdadeira Pesquisa com


então o elemento foi encontrado sucesso

Caso contrário, verificar se x< v [Meio] ou x> v [Meio]


Funcionamento

2.1 Caso x< v[meio], então consideramos

2.2 Caso x> v[meio], então consideramos

Efectuar os passos anteriores até


encontrar o elemento procurado ou até
que o fim do vector seja alcançado.
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

Inicialmente Esq. Meio Dir

Meio = (Esq + Dir) div 2


Meio = (1+8) div 2= 4
Pesquisa Binária
Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

=
Condição Falsa
1ªiteração Rui
Pesquisa Binária
Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

<
Condição Falsa
1ªiteração Rui
Pesquisa Binária
Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

2ªiteração Esq. Meio Dir

Meio = (Esq + Dir) div 2


Meio = (4+8)div 2= 6
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

2ªiteração Rui Condição Falsa


Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

<
2ªiteração Rui Condição Falsa
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

3ªiteração Esq. Meio Dir

Meio = (Esq + Dir) div 2


Meio = (6+8)div 2= 7
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

=
3ªiteração Rui Condição Falsa
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

<
3ªiteração Rui Condição Falsa
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

1 2 3 4 5 6 7 8

Ana Bia Cid Eva Gil Ivo Lia Rui

=
4ªiteração Rui

Condição Verdadeira
Pesquisa Binária

Exemplo 1: Pesquisar o elemento “Rui” no vector seguinte.

Rui

Pesquisa com sucesso


Implementação

int BinarySearch(const T v[], int n, T x)


{
int left = 0, right = n - 1;
while (left <= right)
{
int middle = (left + right) / 2;
if (x == v[middle])
return middle; // encontrou
else if (x > v[middle])
left = middle + 1;
else
right = middle - 1;
}
return -1; // não encontrou
}
Conclusão

Ordenação Nº de Rapidez Eficiência


operações

Pesquisa O vector não Reduzido Lento T(n) = O(n)


Sequencial necessita de
estar
ordenado
Pesquisa O vector tem Médio/ Rápido T(n) =O(log2n)
Binária de estar Elevado
ordenado
Algoritmos de
Pesquisa

Trabalho realizado por:


Ana Paula Silva nº 15649
EPGI

Você também pode gostar