Você está na página 1de 3

Algoritimo pesquisa alfabetica:

proceDURE procuranome(x:tAGENDA; n:integer);


var
proc:string[50];
achou:boolean;
i:integer;
begin
writeln('Digite o nome ou parte dele:');
readln(proc);
achou:=FALSE;
for i:=1 to n do begin
if pos(proc,x.a[i].nome)<>0 then begin
lista(x.a[i]);
achou:=TRUE;
end;
end;
if achou=FALSE then writeln('Nenhuma entrada encontrada');
end;

pesquisa binariafunction BuscaBinaria (Vetor: array of string;


Chave: string; Dim: integer): integer;
var inicio, fim: integer; {Auxiliares que representam o
inicio e o fim do vetor analisado}
meio: integer; {Meio do vetor}
begin
fim := Dim; {O valor do último índice do vetor}
inicio := 1; {O valor do primeiro índice do vetor}
repeat
meio := (inicio+fim) div 2;
if (Chave = vetor[meio]) then
BuscaBinaria := meio;
if (Chave < vetor[meio]) then
fim:=(meio-1);
if (Chave > vetor[meio]) then
inicio:=(meio+1);
until (Chave = Vetor[meio]) or (inicio > fim);
if (Chave = Vetor[meio]) then
BuscaBinaria := meio
else
BuscaBinaria := -1; {Retorna o valor encontrado, ou -1
se a chave nao foi encontrada.}
end;

program ordenanomes;

(**********************************************************************

 algoritmo de selacao para ordenar nomes em ordem alfabética.


**********************************************************************)

const nmax=50;

var

  v: array[1..nmax] of string;

  i,j,n,posMenor: integer;

  temp:string;

begin

  writeln('Digite um inteiro menor ou igual a ' ,nmax, ' :  '); readln(n);

  writeln('Digite ',n,' strings, uma em cada linha);

  for i:=1 to n do readln(v[i]);

  for i:=1 to n-1 do begin

   posMenor:=i;

   for j:=i+1 to n do

     if v[j] < v[posMenor] then posMenor := j;

     if i <> posMenor then begin

     temp := v[i];

     v[i] := v[posMenor];

     v[posMenor] := temp;

    end;

  end;

  writeln;

  for i:=1 to n do  writeln(v[i]);

end.

______________________________________________________________________

Ordenação numerica
program ordenasel;

const nmax=50;

var

  v: array[1..nmax] of integer;

  i,j,n,posMenor,temp: integer;

begin

  writeln('Digite um inteiro menor ou igual a ' ,nmax, ' :  '); readln(n);

  writeln('Digite ',n,' inteiros separados por espacos');

  for i:=1 to n do read(v[i]);

  for i:=1 to n-1 do begin

   posMenor:=i;

   for j:=i+1 to n do

     if v[j] < v[posMenor] then posMenor := j;

     if i <> posMenor then begin

     temp := v[i];

     v[i] := v[posMenor];

     v[posMenor] := temp;

    end;

  end;

  writeln;

  for i:=1 to n do  write(v[i]:4);

end.

Você também pode gostar