Advertisement
Guest User

binary search mas ruim

a guest
Apr 24th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.39 KB | None | 0 0
  1. package trab;
  2. import java.util.Scanner;
  3. class PesquisaBinaria{
  4.  
  5.  
  6.     public int pesquisa(int[] vetorNumeros, int chave){
  7.         int bot, top, mid;
  8.         bot=0;
  9.         top=vetorNumeros.length-1;
  10.         while(bot<=top) {
  11.             mid = (bot + top) / 2;
  12.             if (chave == vetorNumeros[mid]) {
  13.                 return mid;
  14.             }
  15.             if (chave < vetorNumeros[mid]) {
  16.                 top = mid - 1;
  17.             }
  18.             else {
  19.                 bot = mid + 1;
  20.             }
  21.         }
  22.         int retornar=0;
  23.         retornar = vetorNumeros.length+1;
  24.         return -retornar;
  25.     }
  26.     public void ordenar(int[] vetor) {
  27.         for (int i = 1; i < vetor.length; i++){
  28.            
  29.             int aux = vetor[i];
  30.             int j = i;
  31.             while ((j > 0) && (vetor[j-1] > aux)){
  32.             vetor[j] = vetor[j-1];
  33.             j -= 1;
  34.             }
  35.             vetor[j] = aux;
  36.         }
  37.     }
  38. }
  39.  
  40. public class TestePesquisaBinaria {
  41.  
  42.     public static void main(String[] args) {
  43.         Scanner in = new Scanner(System.in);
  44.         while(true) {
  45.             System.out.println("Entre o vetor a ser criado ?(Digite 'FIM' para encerrar o programa)");
  46.             String tamanhoVetor = in.nextLine();
  47.             if(tamanhoVetor.equals("FIM"))
  48.                 break;
  49.            
  50.             // Divide a linha entrada pelo caractere ","
  51.             String splitted[] = tamanhoVetor.split(",");
  52.             // A quantidade de números do vetor pode ser recebida do resultado do método split
  53.             int numbers[] = new int[splitted.length];
  54.            
  55.             // Para cada número que foi separado, usar parseInt para converter para inteiro
  56.             for(int i = 0; i < numbers.length; ++i)
  57.                 numbers[i] = Integer.parseInt(splitted[i].trim());
  58.            
  59.             PesquisaBinaria search = new PesquisaBinaria();
  60.             search.ordenar(numbers);
  61.             System.out.print("Os valores em ordem crescente do vetor são: ");
  62.             for(int i = 0;i<numbers.length;i++) {
  63.                 System.out.print(numbers[i]+" ");  
  64.             }
  65.             while(true) {
  66.                 System.out.println("\nDigite o valor da chave de pesquisa");
  67.                 String ans = in.nextLine();
  68.                 if(ans.equals("FIM"))
  69.                     break;
  70.                 int key = Integer.parseInt(ans);
  71.                 System.out.println("O valor retornado pela pesquisa é " + search.pesquisa(numbers, key));
  72.             }
  73.         }
  74.         in.close();
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement