Aula 2 - Pesquisa_de_Dados
-
Upload
eurico-namaste -
Category
Documents
-
view
213 -
download
0
Transcript of Aula 2 - Pesquisa_de_Dados
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 1/6
CLASSIFICAÇÃO E PESQUISA
Pesquisa de Dados
Primeiramente serão apresentados dois métodos de pesquisa para então ser
apresentados os métodos de ordenação. Os métodos de pesquisa apresentados são:
− Pesquisa seqüencial ou linear;
− Pesquisa binária.
Pesquisa de Dados: Seqüencial
A pesquisa seqüencial (ou busca linear) constitui a forma mais simples de busca deum elemento num conunto de dados. !sta busca inicia no primeiro re"istro e se"ue
seqüencialmente até encontrar o elemento (ou #c$a%e&) procurado. 'a pior situação
poss%el a busca passa por todos os elementos do conunto e não o encontra sendo que na
mel$or situação o elemento procurado está na primeira posição pesquisada. !ste tipo de
técnica é indicado para conuntos ordenados ou não.
A se"uir será ilustrada uma função de pesquisa seqüencial (ne"rito) em um pro"rama
em *:
#include <stdio.h>#include <stdlib.h> //função rand()
#define TAM 100
int p_sequencial(int vet[TAM], int N){int i=0;
while ((N != vet[i]) && (iTAM))i;
"etu"n (i);//retorna a posição do vetor em queo elemento está ou TAM se o elemento não estiver no vetor #
void main(){int vetor[TAM! i! "os!$for(i%0$i<TAM$i&&)
vetor[i%rand()$//gera números aleatórios"rintf('iite o valor a ser "rocurado no vetor*')$scanf('+d'!,)$"os%"-seuencial(vetor! )$if("os<TAM)
"rintf('/ numero esta na "osicao* +d'! "os)$else
"rintf('umero nao eiste no conunto.')$
2
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 2/6
Análise de Compleidade
a) 'o mel$or caso o re"istro com c$a%e i"ual + procurada é encontrado na primeira
posição com apenas uma comparação.
*(n) , -
b) 'o pior caso de pesquisa bem sucedida o re"istro é localiado na posição ' com
um custo de ' comparaç/es.
*(n) , n
c) 'o caso médio o n0mero de comparaç/es para localiar o re"istro é a média entre o
pior e o mel$or caso ou sea ('1-)23. Portanto a comple4idade da pesquisa
seqüencial é *(n) ou sea cresce linearmente com o taman$o do %etor.
*(n) , (n 1-)23
d) Para pesquisas sem sucesso temos o pior caso 1 -.*(n) , n 1-.
Eemplo: 5ado o %etor abai4o com -6 posiç/es ou sea n , -6.
7 8 6 3 9 < - =
a) >uantas comparaç/es são feitas para ac$ar o n0mero 7? C(10) = 1
b) >uantas comparaç/es são feitas para ac$ar o n0mero 9? C(10) = 5
c) >uantas comparaç/es são feitas para ac$ar o n0mero =? C(10) = 10
d) >uantas comparaç/es são feitas para ac$ar o n0mero -6? C(10) = 11
Ee!c"cio
-. !4ecute o pro"rama de busca seqüencial mostrando o pior caso o caso médio mel$or
caso e o um caso sem sucesso utiliando seu @A.
3. 5ado o %etor A,7<93=-6-8B faça um al"oritmo utiliando uma pesquisa
seqüencial para encontrar os n0meros pares.
Pesquisa de Dados: #iná!ia
O al"oritmo de busca binária sC pode ser usado em um conunto de dados ordenados.
O processo consiste em Ddi%idir para conquistarD lo"o:
− 5i%ida um conunto de elementos em duas partes;
− *ompare com a c$a%e do elemento do meio;
− Ee a c$a%e for i"ual ao elemento do meio sucesso na busca (pare) se a c$a%e
comparada for menor o elemento está na parte esquerda da lista se maior na
parte direita;
− Aplique o método recursi%amente.
Eemplo:
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 3/6
-. Ferificar atra%és da pesquisa binária se a c$a%e #'!G& se encontra no %etor de re"istros
ordenados se"undo as c$a%es HA'A IGA *G5 !FA JGK GFO KGA @LGM
Solu$%o:
- 3 9 = < 8
A&A #IA CID E'A (IL I'O LIA )UI Meio =
(Esq+Dir)/2
↑ ↑ ↑ Meio = (1+8)/2 = 4
!sq Neio 5ir
*omo &EI * E'A !sq , Neio 1 - , 1 - , 9
9 = < 8
(IL I'O LIA
)UI Meio = (5+8)/2 = 6
↑ ↑ ↑
!sq Neio 5ir
*omo &EI * I'O !sq , Neio 1 - , = 1 - , <
< 8
LIA )UI Meio = (8+7)/2 =7 ↑ ↑
!sq Neio 5ir
*omo &EI * LIA !sq , Neio 1 - , < 1 - , 8
8
)UI Meio = (8+8)/2 =8
↑
!sq 5ir
*omo &EI + )UI 5ir , Neio - , 8 - , <
A no%a partição ( Meio = 8 e Dir = 7) é uma partição %aia porque meio>dir e como não
restam mais c$a%es a pesquisa termina sem sucesso ou sea a c$a%e &EI não foi
localiada.
3. Ferificar atra%és da pesquisa binária se a c$a%e #IGA& se encontra no %etor de re"istros
ordenados se"undo as c$a%es HA'A IGA *G5 !FA JGK GFO KGA @LGM
Solu$%o:
- 3 9 = < 8
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 4/6
A&A #IA CID E'A (IL I'O LIA )UI Meio =
(Esq+Dir)/2↑ ↑ ↑ Meio = (1+8)/2 = 4
!sq Neio 5ir
*omo #IA + E'A 5ir , Neio - , - ,
- 3
A&A #IA CID Meio = (1+3)/2 = 2
↑ ↑ ↑
!sq Neio 5ir
*omo #IA , #IA sucesso na busca.
. Ferificar atra%és da pesquisa binária se a c$a%e #GFO& se encontra no %etor de re"istros
ordenados se"undo as c$a%es HA'A IGA *G5 !FA JGK GFO KGA @LGM
Solu$%o:
- 3 9 = < 8
A&A #IA CID E'A (IL I'O LIA )UI Meio =
(Esq+Dir)/2
↑ ↑ ↑ Meio = (1+8)/2 = 4
!sq Neio 5ir
*omo I'O * E'A !sq , Neio 1 - , 1 - , 9
9 = < 8
(IL I'O LIA
)UI Meio = (5+8)/2 = 6
↑ ↑ ↑
!sq Neio 5ir
*omo I'O , I'O sucesso na busca.
A se"uir será ilustrada uma função de pesquisa binária (ne"rito) em um pro"rama em
*:
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 5/6
#include <stdio.h>#include <stdlib.h>#define TAM 10
int p_$ina"ia(int vet[TAM], int N){
int inici%=0;int i' = TAM ;int 'ei%;
while (inici%=i'){
'ei% = (inici% i')*+;i (N vet['ei%])
i' = 'ei% ;else
i(N vet['ei%])inici% = 'ei%;
else"etu"n 'ei%;
#"etu"n ; **"et%"na se % ele'ent% n-% e.isti"#
void main(){int vetor[TAM! i! ! au! "os$for(i%0$i<TAM$i&&)
vetor[TAM%rand()$for(i%1$i<TAM$i&&)
{au%rand()$if( au> vetor[i31)
vetor[i%rand()$"rintf('iite o valor a ser "rocurdo no vetor*')$scanf('+d'!,)$"os%"-binaria(vetor! )$if("os<TAM ,, "os 4%31)
"rintf('/ numero esta na "osicao* +d'! "os)$else
"rintf('umero nao eiste no conunto.')$2
8/19/2019 Aula 2 - Pesquisa_de_Dados
http://slidepdf.com/reader/full/aula-2-pesquisadedados 6/6
Ee!c"cios
. !4ecute o pro"rama de busca binária passoapasso utiliando como dados de entrada o
%etor abai4o e procurando os n0meros:
- 3 9 = < 8 7 -6
i. =
ii. 9
iii. 3
. aça uma comparação entre os métodos de pesquisa seqüencial e binária mostrando
quantas comparaç/es seriam necessárias para ac$ar um n0mero em cada um dos %etores:
a. 7
- 3 9 = < 8 7 -6
b. 36
- 3 9 = < 8 7 -6
c.
- 3 9 = < 8 7 -6
9. Ltiliando o %etor A faça um al"oritmo com pesquisa binária e encontre os n0merosmpares.
Bibliografia:
− Li-!o./e/o:QGFGA'G 'i%io. P!o0e/o de Al1o!i/mos: com implementação em Pascal e *.. 3.ed. Eão
Paulo: Pioneira R$omson Kearnin" 366. (*aptulo 9)
− #i2lio1!a3ia Complemen/a!*!K!E Saldemar; *!@>L!G@A @enato. In/!odu$%o a Es/!u/u!as de Dados: com
técnicas de pro"ramação em *. .ed. @io de Taneiro: !lse%ier 366.