Pesquisa sequencial

4 respostas
brunosardao

Sr´s, boa tarde,

Eu tenho o seguinte código de pesquisa sequencial:

public void pesquisarNumero(int x, int [] vetor){
        
        int cont = 0;
        
        for(cont = 0; cont < vetor.length; cont++){
            
            if(vetor[cont] == x){
                System.out.println("Encontrou o número : " + x);
                break; 
            }
        }
        
        if(cont >= vetor.length)
               System.out.println("Não encontrou o número : " + x);
        
}

O vetor já está ordenado através de um BubbleSort, por isso, como é que eu faço para que a pesquisa não percorra elementos desnecessário do vetor? e apenas procure os elementos que foram pedidos ?

Obrigado.

4 Respostas

M

Você pode realizar uma busca binária, que é bem mais eficiente que a busca seqüencial. Dê uma pesquisada sobre o algorítimo de busca binária.

yorgan

Não entendi a parte de procurar apenas os elementos que foram pedidos, não é exatemante isso que o método deve fazer. Se você quer criar uma instrução que vá direto no dado que você quer procurar, acho que isso vai ser um pouco complicado. Mas o que você pode fazer é otimizar o método de pesquisa. Por exemplo, como o array já está ordenado, você pode comparar o elemento que quer pesquisar com o elemento que está no meio do array. Se ele for menor, você faz a pesquisa somente na primeira metade, se ele for maior, você faz na segunda. Isso pode reduzir muito o tempo de pesquisa. Agora se o array for pequeno, não creio que melhorar esse método vai trazer um ganho significativo de desempenho.

[]´s

brunosardao

Obrigado gente, vou tentar com a pesquisa binaria e com o array mencionado…

[]´s
bruno

cassio

Se não quiser fazer consulta desnecessárias e até mesmo as consultas feitas pela busca binária forem demais para você, existem duas opções:

  1. Usar a solução pronta, ou seja, alguma implementação da interface Map.
  2. Criar sua solução. Para isso, pesquise por algorítmos de geração de hash tables.
Criado 14 de maio de 2008
Ultima resposta 14 de mai. de 2008
Respostas 4
Participantes 4