Busca sequencial
• Consiste em percorrer um vetor à procura de um
certo elemento.
• O valor procurado deve ser confrontado com cada
elemento do vetor, e o insucesso da busca só será
considerado caso tenhamos percorrido todo o vetor
sem ter encontrado tal elemento.
• A busca termina ou quando o elemento é
encontrado ou quando todo o vetor for percorrido
sem sucesso.
Pesq
Pesquisa Sequencial
Iß1
Achaß.F.
i < =10
.e.
Acha = .F.
N
S
Pesq = Vet [ i ]
N
S
ißi+1
Acha ß .V.
Acha = .V.
N
Pesq, “ não
foi
localizado”
S
Pesq, “ foi
localizado
na posição
“, i
algoritmo "PESQSEQ"
// Função : Mostra a pesquisa sequencial em um vetor
var
VET: vetor [1..10] de inteiro
PESQ, I: inteiro
ACHA:logico
RESP:caractere
inicio
// Preenche o vetor
para i de 1 ate 10 faca
escreva("Digite o ", I,". valor: ")
leia(VET[I])
fimpara
RESP<-"S"
enquanto RESP="S" faca
escreva ("Informe o valor a ser procurado: ")
leia (PESQ)
I<- 1
ACHA<-Falso
enquanto (I<=10) e (nao ACHA) faca
se PESQ = VET[I] entao
ACHA<-verdadeiro
senao
I<-I+1
fimse
fimenquanto
se ACHA entao
escreval (PESQ, " foi localizado na posição ", I)
senao
escreval (PESQ, " não foi localizado")
fimse
escreval () //pula uma linha
escreval ("Deseja procurar outro valor? (s/n)")
leia(RESP)
fimenquanto
fimalgoritmo
Busca Binária
• Se precisarmos apenas procurar um elemento, num
vetor, uma única vez, é mais rápido fazer uma busca
sequencial do que realizar uma ordenação completa do
vetor; mas se precisarmos fazer repetidas buscas no
mesmo vetor, será melhor que ele esteja ordenado.
• Uma das vantagens de se ter um vetor ordenado é
que há algoritmos de busca que só funcionam com
vetores nesta situação e que são mais eficientes que os
algoritmos de busca seqüencial.
• A busca binária é um dos métodos mais eficientes para
se encontrar um elemento em um vetor ordenado.
Pesquisa Binária
Pesq
Comecoß1
Finalß10
Achaß.F.
Comeco <= Final
.E.
Acha=.F.
Meioß(Comeco+Final) div 2
Pesq=Vet[Meio]
Pesq<Vet[Meio]
ComecoßMeio
+1
Achaß.V.
FinalßMeio -1
Acha=.V.
Pesq, “ não
foi localizado”
Pesq, “ foi
localizado “,
Meio
algoritmo "PESQBIN"
// Função : Mostra a pesquisa BINÁRIA em um vetor ORDENADO
var
VET: vetor [1..10] de inteiro
PESQ, I, COMECO, FINAL, MEIO: inteiro
ACHA: logico
RESP: caractere
inicio
// Preenche o vetor ***dados ordenados****
para i de 1 ate 10 faca
escreva ("Digite o “ , I , ". valor: ")
leia (VET[I])
fimpara
RESP<-"S"
enquanto RESP="S" faca
escreva ("Informe o valor a ser procurado: ")
leia (PESQ) //elemento a ser procurado
COMECO<- 1
FINAL<-10
ACHA<-Falso
enquanto (COMECO<=FINAL) e (nao ACHA) faca
MEIO<-(COMECO + FINAL)\2 //DIVISÃO INTEIRA POR 2
se PESQ = VET[MEIO] entao
ACHA<-verdadeiro
senao
se PESQ < VET[MEIO] entao
FINAL<- MEIO-1
senao
COMECO<- MEIO+1
fimse
fimse
fimenquanto
se ACHA entao
escreval (PESQ, " foi localizado na posição ", MEIO)
senao
escreval (PESQ, " não foi localizado")
fimse
escreval () //pula uma linha
escreval ("Deseja procurar outro valor? (s/n)")
leia (RESP)
fimenquanto
fimalgoritmo
Download

Busca sequencial