Busca Binaria de String

0 respostas
java
jairodione

Olá Pessoal!

Estou com uma dificuldade em corrigir o erro no método public static boolean binaria(String x, String numeros[]).
Fiz uma pesquisa e localizei este método aqui mesmo no guj, ele funciona normalmente se for utilizados numeros inteiros. Abaixo está descrito o algoritmo:

//inicio do metodo construtor

public static void main(String args[]) {

int opcao, qte, x;

String num;

boolean certo, achou;

try {

num = JOptionPane.showInputDialog(“Quantos numeros deseja gravar?”);

qte = Integer.parseInt(num);

int numeros[] = new int[qte];

for (int i = 0; i < qte; i++) {

num = JOptionPane.showInputDialog(“Numero[” + i + “]”);

numeros[i] = Integer.parseInt(num);

}

num = JOptionPane.showInputDialog(“Qual numero deseja pesquisar?”);

x = Integer.parseInt(num);

achou = BuscaCompleto.linear(x, numeros);

if (achou) {

JOptionPane.showMessageDialog(null, "Numero presente na relação: " + x);

} else {

JOptionPane.showMessageDialog(null, “Numero não presente na relação”);

}

certo = true;

num = JOptionPane.showInputDialog(“Quantas palavras?”);

qte = Integer.parseInt(num);

String palavras[] = new String[qte];

for (int i = 0; i < qte; i++) {

num = JOptionPane.showInputDialog(“Palavras[” + i + “]”);

palavras[i] = num;

}

num = JOptionPane.showInputDialog(“Qual palavra deseja pesquisar?”);

achou = binaria(num, palavras);

if (achou) {

JOptionPane.showMessageDialog(null, "Palavra presente na relação: "+achou);

} else {

JOptionPane.showMessageDialog(null, “Palavra não presente na relação”);

}

certo = true;

} catch (Exception e) {

JOptionPane.showMessageDialog(null, “Ocorreu um erro durante a leitura!”);

}

}//fim do metodo construtor
//inicio do metodo para busca binaria de String
public static boolean binaria(String x, String numeros[]){
    int inicio = 0, fim = numeros.length - 1;
    int meio;
    while(inicio <= fim){
        meio = (inicio + fim) / 2;
        if(x == numeros[meio])
            return true;
        if(x < numeros[meio])//AQUI OCORRE O ERRO A IDE INFORMA O SEGUINTE: "BAD OPERAND TYPES FOR BINARY OPERATOR  '<'  FIRST TYPE: STRING SEVOND TYPE: STRING
            fim = meio - 1;
        else
            inicio = meio + 1;
    }
    return false;
}

Acima é o método que localizei aqui no guj, está com alteração nos parametros que era do tipo int, e agora são String. Como corrigir?

Criado 11 de dezembro de 2017
Respostas 0
Participantes 1