Bom Dia, por favor como fica esse algoritmo em java? Obrigado!
algoritmo “BuscaBinaria”
var
a : vetor[0..14] de inteiro
lowerBound, upperBound, curIn, searchKey : inteiro
fim : logico
inicio
a[0] <- 1
a[1] <- 2
a[2] <- 4
a[3] <- 5
a[4] <- 8
a[5] <- 10
a[6] <- 11
a[7] <- 20
a[8] <- 25
a[9] <- 32
a[10] <- 33
a[11] <- 37
a[12] <- 39
a[13] <- 46
a[14] <- 50
escreval("Busca: ")
leia(searchKey)
lowerBound <- 0
upperBound <- 14
fim <- falso
enquanto fim = falso faca
curIn <- int((lowerBound + upperBound) / 2)
escreval(lowerBound, " " , upperBound, curIn)
se a[curIn] = searchKey entao
escreval("achou na posicao" , curIn)
fim <- verdadeiro
senao
se lowerBound > upperBound entao
escreval("não achou")
fim <- verdadeiro
senao
se a[curIn] < searchKey entao
lowerBound <- curIn + 1
senao
upperBound <- curIn - 1
fimse
fimse
fimse
fimenquanto
fimalgoritmo
Vamos por partes. Como vc acha que ficaria essa parte em java?
então acho que assim.
public static void main(String[] args){
Scanner sc1 = new Scanner(System.in);
System.out.println("Busca:");
Scanner sc2 = new Scanner(System.in);
}
Essa parte:
Pode ser traduzida em java assim:
System.out.println("Busca:");
O leia:
leia(searchKey)
Pode ser assim:
String searchKey = scanner.nexLine();
Nesse último, o scanner é declarado no início do código e somente uma vez:
Scanner scanner = new Scanner(System.in);
@danielmoreira7
Bom dia campeão.
Espero que isto esclareça usas dúvidas.
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
new Test().test();
}
public void test() {
int[] vetor = new int[15];
int lowerBound, upperBound, curIn, searchKey;
boolean fim;
vetor[0] = 1;
vetor[1] = 2;
vetor[2] = 4;
vetor[3] = 5;
vetor[4] = 8;
vetor[5] = 10;
vetor[6] = 11;
vetor[7] = 20;
vetor[8] = 25;
vetor[9] = 32;
vetor[10] = 33;
vetor[11] = 37;
vetor[12] = 39;
vetor[13] = 46;
vetor[14] = 50;
System.out.println("Busca: ");
Scanner scanner = new Scanner(System.in);
searchKey = scanner.nextInt();
lowerBound = 0;
upperBound = 14;
fim = false;
while (fim == false) {
curIn = (lowerBound + upperBound) / 2;
System.out.println(lowerBound + " " + upperBound + " " + curIn);
if (vetor[curIn] == searchKey) {
System.out.println("achou na posição " + curIn);
fim = true;
} else {
if (lowerBound > upperBound) {
System.out.println("não achou");
fim = true;
} else {
if (vetor[curIn] < searchKey) {
lowerBound = curIn + 1;
} else {
upperBound = curIn - 1;
}
}
}
}
}
}