Você está aqui: Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como usar a busca binária em Java - Pesquisa binária na linguagem JavaQuantidade de visualizações: 679 vezes |
|
A busca binária, ou pesquisa binária, é um algoritmo eficiente para encontrar um item em uma lista (vetor ou array) ordenada. Sim, os itens devem, obrigatoriamente, estar ordenados. O processo é bem simples. A busca binária começa a partir do meio da lista e compara o item nesta posição com o valor sendo pesquisado. Se o valor não for encontrado e for menor que o item no meio da lista, o algoritmo passa para a porção à esquerda da lista, eliminando, assim, metade dos elementos do vetor ou array (a porção maior que o valor pesquisado). Se o valor não for encontrado e for maior que o item no meio da lista, então a busca reinicia a partir da metade da sub-lista à direita (os itens maiores que o valor pesquisado). Essa divisão continua até que o valor seja encontrado ou não seja mais possível dividir a lista pela metade. Se um array ou vetor possuir 100 elementos e usarmos a busca binária nele, precisaremos efetuar no máximo 7 tentativas para encontrar o valor desejado. Se a lista possuir 4 bilhões de itens nós teremos que fazer no máximo 32 tentativas. Isso acontece porque a pesquisa binária é executada em tempo logarítmico, ou seja, log2 n, onde n é a quantidade de itens no vetor. Dessa forma, se tivemos 1.000 itens em um array, log2 1000 = 10 tentativas. Lembre-se de que, na programação log e log2 retornam resultados diferentes: log(10) = 2.302585092994046 enquanto log2(10) = 3.321928094887362. Na análise da busca binária nós usamos sempre log2. Vamos agora ver como podemos codificar a busca binária em Java. Veja o código a seguir: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package estudos;
import java.util.Arrays;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos criar uma um vetor ordenado de inteiros
int valores[] = {3, 5, 7, 8, 9, 12, 43, 50, 52, 60};
System.out.println("Os valores do array são: " +
Arrays.toString(valores));
// vamos pedir o item a ser pesquisado
System.out.print("Informe o número a ser pesquisado: ");
int numero = Integer.parseInt(entrada.nextLine());
// agora vamos pesquisar o número no array usando a pesquisa
// binária
// a variável esquerda aponta para o primeiro elemento do vetor
int esquerda = 0;
// a variável direita aponta para o último elemento do vetor
int direita = valores.length - 1;
// para indicar se o valor foi encontrado
boolean encontrado = false;
// enquanto houver mais de um elemento a ser comparado
while (esquerda <= direita){
// obtemos o elemento na metade da lista
int meio = (esquerda + direita) / 2;
// fazemos a comparação
if (numero == valores[meio]){
System.out.println("O número foi encontrado no índice " +
meio);
encontrado = true;
break; // sai do laço
}
// o item atual é maior que o valor pesquisado?
if (valores[meio] > numero){
direita = meio - 1;
}
// o item atual é menor que o valor pesquisado?
else{
esquerda = meio + 1;
}
}
// o valor foi encontrado?
if (!encontrado){
System.out.println("O valor pesquisado não foi encontrado");
}
}
}
Ao executar este código Java nós teremos o seguinte resultado: Os valores da lista são: [3, 5, 7, 8, 9, 12, 43, 50, 52, 60] Informe o número a ser pesquisado: 9 O número foi encontrado no índice 4 |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






