Como utilizar o metodo de busca binario para localizar um String

4 respostas Resolvido
java
jairodione

Olá Pessoal!

Fiz uma matriz em que é armazenada as seguintes informações:

  • Código
  • Nome
  • Salario
  • Data de Admissão
public static void main(String[] args) {

String nome[][] = new String[2][3];

String n = “”, x = “”;

boolean achou;

//inicio do laço for para gravar

for (int l = 0; l < 2; l++) {

//inicio do laço for interno

for (int c = 0; c < 3; c++) {

n = JOptionPane.showInputDialog("Digite o Codigo, Nome, Salario e Data de Admissao : ");

nome[l][c] = n;
x += nome[l][c];
        }//fim do laço for interno
        x += "\n";
    }//fim do laço for para gravar

    JOptionPane.showMessageDialog(null, x + " ", "Informações Digitadas pelo Usuario", JOptionPane.INFORMATION_MESSAGE);

Ordeno a Matriz:

//vou usar o vetor abaixo para ordenar a matriz

String[] ordenar = new String[nome.length * nome[0].length];

int contador = 0;
//ordenação parcial da matriz
    for (String[] linha : nome) {
        Arrays.sort(linha);
        System.arraycopy(linha, 0, ordenar, contador, nome[0].length);
        contador += nome[0].length;
    }

    Arrays.sort(ordenar);

    //ordenação completa da matriz
    for (int l = 0; l < nome.length; l++) {
        for (int c = 0; c < nome[0].length; c++) {
            nome[l][c] = ordenar[indexOnAnyArray(l, c, nome[0].length)];
        }
    }
    JOptionPane.showMessageDialog(null, Arrays.deepToString(nome) + " ", "Informações Digitadas Pelo Usuario de Forma Ordenada", JOptionPane.INFORMATION_MESSAGE);
private static int indexOnAnyArray(int linha, int coluna, int colunas) {

return linha * colunas + coluna;

}

Agora não estou sabendo implementar a função

Arrays.binarySearch(seuArray, valorProcurado);

Como devo fazer?

4 Respostas

Emerzoom

Bom dia,

Isso vai lhe ajudar, certamente:
https://www.tutorialspoint.com/java/util/arrays_binarysearch_int.htm

jairodione

Olá Emerzoom!

Pelo que link que vc enviou verifiquei que a função de busca binária só funciona com variáveis do tipo int, mas gostaria de utilizar com variável do tipo String, ou seja utilizar a função para localizar uma String!

jairodione
Solucao aceita

Olá Emerzoom!

Consegui solucionar, fiz uma pesquisa e localizei o que procurava no site:
https://pt.stackoverflow.com/questions/10650/dúvidas-busca-binária

Então acrescentei as linhas abaixo no final do código “classe” e funcionou!!!

String p;

p = JOptionPane.showInputDialog("Digite o Numero do Funcionario que Deseja Localizar : ");
    
    JOptionPane.showMessageDialog(null, Arrays.binarySearch(ordenar, p) + " ", "Funcionario Localizado! ", JOptionPane.INFORMATION_MESSAGE);
Emerzoom

Boa tarde,

Na vdd, essa api tem uma estrutura que disponibiliza diversas opções e não só para trabalho com valores do tipo inteiro.

Ela tem bem mais opções do que vc imagina. Vc poderá ver abaixo que, para um futuro uso, essa classe possue inúmeras outras utilidades:

https://www.tutorialspoint.com/java/util/java_util_arrays.htm

De toda forma, o importante é vc ter obtido o resultado esperado e compartilhado sua solução. Abraços.

Criado 28 de dezembro de 2017
Ultima resposta 2 de jan. de 2018
Respostas 4
Participantes 2