• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vis[eu]

HELP! Melhoramento da eficiencia de pesquisa no vector

2 mensagens neste tópico

:hmm: :wallbash:

Boas, tenho uma duvida em relação ao codigo do seguinte programa, o programa gera um vector de numeros aleatorios e ordena-os.

Depois pede ao utilizador um numero e devolve uma mensagem a dizer em que posição encontrou o numero ou "não encontrou"..

O meu problema é como tornar a pesquisa no vector mais rapida e assim tornar o programa mais eficiente...

O meu professor de Programação deu a dica de dividir o vector ao meio, mas não sei como fazer isso...

Se alguem puder ajudar.. OBRIDAGO  :P  :wallbash:  :wallbash:  :wallbash:  :wallbash:

*************************************************

Program percorreV6;

uses CRT, DOS;

const max=3200;

var vec:array [1..max+1] of integer;

    i,aux,num:integer;

    tecla:char;

    troca:boolean;

    hora,minuto,segundos, Cent_Seg:word;

Begin

    clrscr;

    randomize;

        for I:=1 to max do vec:=random(51);

          repeat

            troca:=false;

              for I:=1 to (max-1) do

                if vec > vec[i+1] then

                    begin

                      troca:=true;

                      aux:=vec[i+1];

                      vec[i+1]:=vec;

                      vec:=aux;

                    end;

          until not troca;

        for i:=1 to max do write(vec,' ');

        writeln;

        writeln;

        writeln;

        //*******Pergunta*******

          write('indique um numero inteiro: ');

          readln(num);

    I:=1;

    vec[max+1]:=num;

        writeln;

        writeln;

        while (num>vec) do inc(i);

        GetTime(hora,minuto,segundos,Cent_seg);

        writeln('SÆo: ',hora,' horas '  ,minuto,' minutos e '  ,segundos,' segundos ',cent_seg);

        if (I<=max) and (vec=num)  then writeln('Existe o numero ',num,' na posi‡ao ',i)

                      else writeln('nao existe');

        GetTime(hora,minuto,segundos,Cent_seg);

        writeln('SÆo: ',hora,' horas '  ,minuto,' minutos e '  ,segundos,' segundos ',cent_seg);

    tecla:=readkey;

end.

********************************************************

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora