Pesquisa de informa o
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Pesquisa de Informação PowerPoint PPT Presentation


  • 52 Views
  • Uploaded on
  • Presentation posted in: General

Pesquisa de Informação. A procura/pesquisa de informação é uma das actividades quotidianas mais frequentes; E consequentemente, uma das actividades preponderantes num sistema informático;

Download Presentation

Pesquisa de Informação

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Pesquisa de informa o

Pesquisa de Informação

  • A procura/pesquisa de informação é uma das actividades quotidianas mais frequentes;

  • E consequentemente, uma das actividades preponderantes num sistema informático;

  • Embora a pesquisa de informação (procurar um elemento entre um conjunto deles) pareça uma operação simples, criar programas eficientes em termos de procura levanta vários problemas;

  • A pesquisa de informação é muitas vezes efectuada recorrendo a tabelas. Assim, vamos analisar dois métodos de pesquisa de informação em tabelas:

  • 1. Procura sequencial ou linear

  • 2. Procura binária

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa sequencial de informa o

Pesquisa Sequencial de Informação

  • Procura sequencial ou linear – é uma das formas mais simples de procurar dados numa tabela. O que se faz é percorrer a tabela: começa-se no 1º elemento e compara-se esse elemento com o valor dado, depois passa-se para o 2º elemento e compara-se com o valor dado, e assim sucessivamente até que o valor seja encontrado ou cheguemos ao fim da tabela.

  • Podemos fazer este tipo de procura de 2 formas:

  • a) sem a utilização de sentinelas

  • b) com a utilização de sentinelas

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Pesquisa Sequencial de Informação

Considere para os exemplos que se vão seguir, que as variáveis e tipos foram definidos da seguinte forma:

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

Program procuratel (input, output);

Const

maxpessoas = 1000;

Type

repnome = array [1..25] of char;

tabnomes = array [1..maxpessoas] of repnome;

tabtelefones = array [1..maxpessoas] of integer;

Var

nomes : tabnomes;

telefones : tabtelefones;

nomedes : repnome;

i, telefone : integer;


Pesquisa de informa o

Pesquisa Sequencial de Informação

a) sem a utilização de sentinelas

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

Function procura (chave:repnome;

var nomes:tabnomes;

var telefones:tabtelefones):integer;

var

i : integer;

begin

i:=1;

while (nomes[i]<>chave) and (i<maxpessoas) do

i:=i+1

if nomes[i]=chave then

procura:=telefones[i];

else

procura:=-1

end;

Esta função efectua

uma procura

Sequencial na tabela

Nomes tentando

Encontrar a palavra

Correspondente à

Variável chave !


Pesquisa de informa o

Pesquisa Sequencial de Informação

  • O problema da solução anterior é que a parte do programa que diz respeito à procura propriamente dita, ou seja, a instrução:

  • while (nomes[i]<>chave) and (i<maxpessoas) do

  • i:=i+1;

  • Tem de efectuar continuamente 2 testes, o que torna a operação de pesquisa menos eficiente:

  • - ver se o nome que se procura foi encontrado:

  • (nomes[i]<>chave)

  • - ver se já se chegou ao fim da tabela:

  • (i<maxpessoas)

  • Note-se que o 1º teste é necessário mas o 2º só faz falta porque não podemos garantir que o nome que procuramos existe de facto na tabela.

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Pesquisa Sequencial de Informação

b)Uma forma de prescindir do 2º teste é através da utilização do que se designa por valor sentinela, ou seja, um valor que é inserido na tabela para garantir que a procura tem sucesso:

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

Function procura (chave:repnome;

var nomes:tabnomes;

var telefones:tabtelefones):integer;

var

i : integer;

Begin

nomes[maxpessoascsent] := chave;

i:=1;

while (nomes[i]<>chave)do

i:=i+1

if i<>maxpessoascsent then

procura:=telefones[i];

else

procura:=-1

end;

Colocação do valor

Sentinela.


Pesquisa de informa o

Pesquisa Sequencial de Informação

  • Para se poder utilizar um valor sentinela é preciso que existe uma

  • Posição adicional na tabela, ou seja, se a tabela tem n elementos terá

  • de ter n+1 posições;

  • Nessa posição adicional da tabela (n+1) coloca-se o valor sentinela;

  • A seguir efectua-se a pesquisa normalmente;

  • A última operação tem de ser verificar se o valor encontrado

  • corresponde ao valor sentinela.

  • O exemplo do slide anterior pressupõe que a definição inicial do

  • programa principal passe a ser:

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

Program procuratel (input, output);

Const

maxpessoas = 1000;

maxpessoascsent = 1001;

Type

repnome = array [1..25] of char;

tabnomes = array [1..maxpessoascsent] of repnome;

tabtelefones = array [1..maxpessoas] of integer;


Pesquisa de informa o

Pesquisa Binária de Informação

  • 2. Procura binária – é uma alternativa à procura sequencial e é mais eficiente só que exige que os elementos que estão a ser pesquisados se encontrem ordenados. Este tipo de procura reduz o nrº de elementos a pesquisar para metade pois processa-se da seguinte forma:

  • a) começa-se por se considerar o elemento que está no meio da tabela;

  • b) se esse valor for maior (ou seja, aparecer depois) que o elemento que estamos a procurar então a procura será feita apenas na primeira metade da tabela;

  • c) se esse valor for menor (ou seja, aparecer antes) que o elemento que estamos a procurar então a procura será feita apenas na segunda metade da tabela;

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Pesquisa Binária de Informação

Function procura (chave:repnome;

var nomes:tabnomes;

var telefones:tabtelefones):integer;

var

LimInf, LimSup, Meio : integer;

begin

LimInf:=1;

LimSup:=Maxpessoas;

repeat

meio:=(LimInf+LimSup) div 2;

if chave<Nomes[Meio]then

LimSup:=Meio-1;

else

LimInf:=Meio+1;

until (chave=Nomes[Meio]) or (LimInf>LimSup);

if chave=Nomes[Meio] then

procura:=telefones[Meio];

else

procura:=-1

end;

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Ordena o bolha bubble sort

Ordenação Bolha (Bubble Sort)

  • Já vimos que a ordenação da informação facilita as operações de busca tornando-as mais eficientes;

  • Os algoritmos de ordenação dividem-se em 2 grandes grupos:

    • os de ordenação interna – que ordenam os elementos que estão simultaneamente armazenados em memória, ex: tabela;

    • os de ordenação externa – que ordenam elementos que por serem muitos não podem estar simultaneamente em memória, estando parte desses elementos armazenada no computador em ficheiros;

  • Os algoritmos que vamos ver são apenas de ordenação interna, ou seja, algoritmos para a ordenação de dados armazenados em tabelas .

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Ordenação por Borbulhamento (“Bubble Sort”)

  • É o mais simples e básico algoritmo de ordenação.

  • A ideia básica é:

    • percorrer todos os elementos a ordenar;

    • comparar elementos adjacentes;

    • trocar os pares de elementos que estejam fora de ordem;

    • De um modo geral uma única passagem por todos os elementos não é suficiente para ordenar a tabela, sendo normal várias passagens pelos elementos. A tabela só estará ordenada quando for efectuada uma passagem por todos os elementos sem que seja efectuada qualquer troca.

  • O único problema deste tipo de ordenação é que não se torna muito eficiente dado que apenas são trocados os valores adjacentes. Assim, se um elemento estiver muito longe da sua posição final ordenada é preciso efectuar muitas passagens até que seja colocado no seu devido lugar.

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Ordena o por borbulhamento bubble sort

Ordenação por Borbulhamento (“Bubble Sort”)

Exemplo 1:

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

Program BSort(input,output);

const

n=10;

var

i, j : integer;

temp : integer;

a : array[1..n] of integer;

begin

for i:=1 to (n-1) do

for j:=i+1 to n do

if a[i]>a[j] then begin

temp:=a[i];

a[i]:=a[j];

a[j]:=temp;

end;

end.


Ordena o por borbulhamento bubble sort1

Ordenação por Borbulhamento (“Bubble Sort”)

Exemplo 2:

Procedure ordena(.....);

Const

tamanho=10;

var

i : integer;

nenhumatroca : boolean;

numeros:array[1..tamanho];

Procedure troca (var x,y:integer);

var temp :integer;

begin

temp:=x;

x:=y;

end

begin

repeat

nenhumatroca:=true;

for i:=1 to tamanho-1 do

if numeros[i]>numeros[i+1] then

begin

troca(numeros[i],numeros[i+1]);

nenhumatroca:=false;

end

until nenhumatroca:=true

End;

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Ordenação “Shell Sort”

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

  • É uma variante da ordenação por borbulhamento;

  • A ideia básica:

    • comparar e trocar por borbulhamento, não os elementos adjacentes mas os elementos separados por um certo intervalo (que é metade do número de elementos a ordenar);

    • depois esse intervalo é dividido ao meio e o processo repete-se até que o intervalo seja 1.

  • Esta ordenação é mais eficiente que a ordenação por borbulhamento dado que as primeiras passagens apenas consideram um subconjunto do total de elementos a ordenar e as últimas passagens, que são as que vão incidir sobre todos os elementos já os vão encontrar parcialmente ordenados.


Pesquisa de informa o

Ordenação “Shell Sort”

Procedure ordena(.....);

Const

tamanho=10;

var

intervalo, i : integer;

nenhumatroca : boolean;

numeros:array[1..tamanho];

Procedure troca (var x,y:integer);

var temp :integer;

begin

temp:=x;

x:=y;

end

Begin

intervalo:=tamanho div 2;

repeat

repeat nenhumatroca:=true;

for i:=1 to tamanho-intervalo do

if numeros[i]>numeros[i+intervalo] then

begin

troca(numeros[i],numeros[i+intervalo]);

nenhumatroca:=false;

end

until nenhumatroca:=true

intervalo := intervalo div 2

until intervalo:=0

End;

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


Pesquisa de informa o

Ordenação por Selecção (“Selection Sort”)

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”

  • Consiste em percorrer todos os elementos a ordenar e a cada passagem coloca um elemento na posição correcta, ou seja:

    • na primeira passagem o valor mais pequeno é colocado na posição correcta;

    • na segunda passagem o segundo valor mais pequeno é colocado na posição correcta;

    • e assim sucessivamente...


Pesquisa de informa o

Ordenação por Selecção (“Selection Sort”)

Procedure ordena(.....);

Const

tamanho=10;

var

posmenor, i, j : integer;

nenhumatroca : boolean;

numeros:array[1..tamanho];

Procedure troca (var x,y:integer);

var temp :integer;

begin

temp:=x;

x:=y;

end

Begin

for i:=1 to tamanho-1 do

begin

posmenor:=i;

for j:=i+1 to tamanho do

if numeros[j]<numeros[posmenor] then

posmenor:=j;

troca(numeros[i], numeros[posmenor])

end

End;

Pesquisa de Informação:

Procura Sequencial ou Linear

Procura Binária

Ordenação de Informação:

Ordenação“Bubble Sort”

Ordenação“Shell Sort”

Ordenação“Selection Sort”


  • Login