Aula 2 - Pesquisa_de_Dados

6
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 de um 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 que o 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

Transcript of Aula 2 - Pesquisa_de_Dados

Page 1: 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

Page 2: Aula 2 - Pesquisa_de_Dados

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:

Page 3: Aula 2 - Pesquisa_de_Dados

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

Page 4: Aula 2 - Pesquisa_de_Dados

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

*:

Page 5: Aula 2 - Pesquisa_de_Dados

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

Page 6: Aula 2 - Pesquisa_de_Dados

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.