Você está na página 1de 10

Atividade 6.

1
CÓDIGOS NO PASCAL
CORREÇÃO
Aplicações com Vetores
• Classificação, organizar um conjunto de elementos
em uma determinada ordem (alfabética, numérica
ou cronológica)
• Método da Bolha, mais popular
• Pesquisa, verificar a existência de um valor dentro
de um conjunto
• Método de Pesquisa Sequencial
• Método de Pesquisa Binária
Método da Bolha de Classificação (Bubble Sort)

A filosofia básica deste método consiste em:


1. "Varrer" o vetor, comparando os elementos vizinhos
entre si.

2. Caso estejam fora de ordem, os mesmos trocam de


posição entre si.

3. Procede-se assim até o final do vetor. Na primeira


"varredura" verifica-se que o último elemento do vetor
já está no seu devido lugar (no caso de ordenação
crescente, ele é o maior de todos). A segunda
"varredura" é análoga à primeira e vai até o
penúltimo elemento.

4. Este processo é repetido até que seja feito um número


de varreduras igual ao número de elementos a serem
ordenados menos um. Ao final do processo o vetor está
classificado segundo o critério escolhido.
program MetodoDaBolha;
uses Crt;
const n=10;
var i, j, aux: integer;
a: array[1..n] of integer;
begin
randomize;
for i:=1 to n do a[i]:=random(100);
clrscr;
writeln('Vetor Entrada:');
for i:=1 to n do writeln(i:2, '- ', a[i]:3);

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


for j:=1 to (n-i) do 3
1
if (a[j] > a[j+1])
then begin
aux := a[j]; {swap, troca de informação }
2 a[j] := a[j+1]; { entre variáveis }
a[j+1] := aux;
end;
writeln;
writeln('Vetor Saída em Ordem Crescente:');
for i:=1 to n do writeln(i:2, '- ', a[i]:3);
end.
Ordenação por Seleção
Um dos algoritmos mais simples de ordenação. Neste método a
classificação é efetivada por seleção sucessiva do menor valor
de chave contido no vetor "a". A cada passo é feita uma
varredura do segmento do vetor com os elementos ainda não
selecionados e determinado aquele elemento de menor valor, o
qual é colocado, por troca, em sua posição definitiva no vetor
classificado e o processo repetido para o segmento que contém
os elementos ainda não selecionados.

Na Prática
1º passo: procura a posição do menor elemento do vetor (min)
e em seguida realiza a troca deste elemento com
aquele que está na primeira posição (a[i]);

2º passo: procura o menor elemento no subvetor que começa a


partir da segunda posição e troca com o segundo
elemento e assim por diante;

O método deverá repetir sucessivamente o processo de seleção


durante "n-1" passos.
program MetodoDaBolha;
uses Crt;
const n=10;
var i, j, aux, min: integer;
a: array[1..n] of integer;
begin
randomize;
for i:=1 to n do a[i]:=random(100);
clrscr;
writeln('Vetor Entrada:');
for i:=1 to n do writeln(i:2, '- ', a[i]:3);

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


begin
min := i;
for j:=i+1 to n do
if (a[j] < a[min])
then min := j; { min = posição do menor elemento }
aux := a[i]; {swap, troca de informação }
a[i] := a[min]; { entre variáveis }
a[min] := aux;
end;

writeln;
writeln('Vetor Saída em Ordem Crescente:');
for i:=1 to n do writeln(i:2, '- ', a[i]:3);
end.
Método de Pesquisa Sequencial

A pesquisa sequencial ou linear é o método mais


objetivo para se encontrar um elemento
particular em um conjunto não classificado.

Esta técnica consiste:


1. na simples verificação de cada componente do
conjunto seqüencialmente, uma após a outra
2. até que o elemento desejado seja encontrado,
neste caso, diz-se que a pesquisa foi bem
sucedida
3. ou que todos os elementos do conjunto tenham
sido verificados sem que o elemento procurado
tenha sido encontrado, pesquisa malsucedida.
program PesquisaSequencial;
uses Crt;
const n = 100;
var Encontrou: boolean; { flag da pesquisa }
i, x: integer;
A: array[1..n] of integer;
begin
randomize;
for i := 1 to n do A[i] := random(100);

write('Forneça o elemento a ser procurado : ');


readln(x);

i := 1; Encontrou := false;
1
while (i <= n) and (Encontrou = false) do
if A[i] = x
then Encontrou := true 2
else i := i + 1;

clrscr;
3
if Encontrou = true
then writeln('O elemento existe na posição ', i)
else writeln('O elemento não existe no conjunto.');
end.
Método de Pesquisa Binária
Quando os elementos de um vetor estão previamente
classificados segundo algum critério, então pesquisas
muito mais eficientes podem ser conduzidas. Entre estas
destaca-se o método de pesquisa binária.
Esta técnica consiste:
1. inicialmente o vetor é classificado
2. o elemento que divide o vetor ao meio com relação ao
seu número de componentes é localizado e comparado ao
valor procurado.
3. Se ele for igual ao valor procurado a pesquisa é dita
bem-sucedida e é interrompida.
4. no caso dele ser maior que o valor procurado, repete-se
o processo na primeira metade do vetor.
5. no caso do elemento central do vetor ser menor que o
valor procurado, repete-se o processo na segunda metade
do vetor.
6. Este procedimento é continuado até que o elemento
desejado seja localizado (pesquisa bem-sucedida), ou
então, até que não reste mais nenhum trecho do vetor
a ser pesquisado (pesquisa malsucedida).
program PesquisaBinaria;
uses Crt;
const n = 100;
var Inicio, Fim, Meio, x: integer;
Encontrou: boolean;
A: array[1..n] of integer;
begin
{ Alimenta o vetor, entrar com o elemento a ser procurado e
ordenar o vetor. }
Inicio := 1; Fim := n; Encontrou := false; 1
while (Encontrou = false) and (Inicio <= Fim) do 6
begin
Meio := (Inicio + Fim) div 2;
if A[Meio] = x 2
then Encontrou := true 3
else if A[Meio] > x 4
then Fim := Meio - 1
else Inicio := Meio + 1; 5
end;
...
if Encontrou = true
then writeln('O elemento existe na posição ', Meio)
else writeln('O elemento não existe no conjunto.');
end.

Você também pode gostar