Buscar

Busca Binaria

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

PROGRAM BUSCA_BINARIA;
USES CRT;
CONST N=11;
VAR NOME: ARRAY [1..10]OF STRING[10];
 ACHOU:BOOLEAN;
 BUSCA_NOME, RESP:STRING[10];
 X, INICIO, MEIO, FIM:INTEGER;
BEGIN
CLRSCR;
FOR X:=1 TO 10 DO
 BEGIN
 WRITE('ENTRE COM O NOME DA POSICAO NUMERO ',X, ' : ');
 READLN(NOME[X]);
 END;
CLRSCR;
 REPEAT
 WRITE('ENTRE COM O NOME A SER PROCURADO: ');
 READLN(BUSCA_NOME);
 ACHOU:=FALSE;
 INICIO:=1;
 FIM:=N;
 MEIO:=(1 + N) DIV 2;
 WHILE ((MEIO >1 ) AND (MEIO < 11) AND (BUSCA_NOME <> NOME[MEIO]) ) DO
 BEGIN
 IF BUSCA_NOME > NOME[MEIO] THEN
 BEGIN
 INICIO:=MEIO + 1;
 END
 ELSE
 BEGIN
 FIM:=MEIO ; 
 END;
 WRITELN('MEIO: ', MEIO); 
 MEIO:=(INICIO + FIM)DIV 2;
 END;
 IF MEIO < 11 THEN 
 BEGIN
 ACHOU:=BUSCA_NOME = NOME[MEIO];
 END;
 IF ACHOU = TRUE THEN
 BEGIN
 WRITELN('INFORMACAO SE ENCONTRA NA POSICAO: ', MEIO);
 END
 ELSE
 BEGIN
 WRITELN('INFORMA€AO NÇO ENCONTRADA !!!');
 END;
 WRITELN;
 WRITE('DESEJA REALIZAR UMA NOVA BUSCA [S,N]');
 READLN(RESP)
 UNTIL UPCASE(RESP) <> 'S';
 READKEY;
END.

Outros materiais