Pesquisa sequencial

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.

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.

1 curtida

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

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

[]´s
bruno

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.