Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. package br.pesquisaBinaria;
  2.  
  3. import java.io.FileWriter;
  4. import java.io.PrintWriter;
  5. import java.util.Random;
  6. import java.util.Scanner;
  7.  
  8. public class PesquisaBinaria {
  9. public static void main(String[] args) {
  10.  
  11. int n;
  12.  
  13. for (int cnt_tamanho = 1; cnt_tamanho <= 2; cnt_tamanho++) {
  14. if (cnt_tamanho == 1)
  15. n = 100;
  16. else
  17. n = 1000;
  18.  
  19. int vpesq, vret, k;
  20. int item[] = new int[n];
  21.  
  22.  
  23. Random gerador = new Random();
  24. Scanner ler = new Scanner(System.in);
  25.  
  26. System.out.println(" ");
  27. System.out.print("Aguarde... Gerando vetor");
  28. for(k=0;k<n;k++){
  29. item[k]=gerador.nextInt(100*2);
  30. }
  31. imprime(item);
  32.  
  33. double tempoi = System.nanoTime();
  34.  
  35. System.out.println(" ");
  36. System.out.println("n*********ORDENADO....");
  37. int i, menor, j, aux;
  38. for(i=0;i<n;i++){
  39. menor = i;
  40. for(j=menor+1;j<n;j++){
  41. if(item[j] < item[menor]){
  42. menor = j;
  43. }
  44. }
  45. if(menor != i){
  46. aux = item[i];
  47. item[i] = item[menor];
  48. item[menor] = aux;
  49. }
  50. }
  51. imprime(item);
  52. System.out.println("*********PESQUISA BINÁRIA....");
  53. System.out.println("*********Entre com o número para ser pesquisado");
  54. vpesq=ler.nextInt();
  55.  
  56.  
  57. vret = pesquisa_bin(item, vpesq);
  58.  
  59.  
  60. if(vret == -1){
  61. System.out.println("Não encontrado.");
  62. } else {
  63. System.out.println("Encontrado na posição: " + vret);
  64. }
  65.  
  66.  
  67. double tempof = System.nanoTime();
  68. double tempom = tempof - tempoi;
  69. tempom = tempom/1000000000.0;
  70. System.out.printf("Tempo gasto: %.10f n", tempom);
  71.  
  72. try {
  73. // aberto para operações de saída através do objeto arq instanciado e criado a
  74. // partir da classe FileWrite
  75.  
  76. FileWriter arq = new FileWriter("PesquisaBinaria.txt", true);
  77. // o objeto de gravação gravaArq é associado a um fluxo de saída de dados
  78. // baseado
  79. // em caracteres através da classe PrinterWriter.
  80.  
  81. PrintWriter gravaArq = new PrintWriter(arq, true);
  82. // gravaArq.write(qtvezes, ctcomp, cttroca, tempom);
  83. gravaArq.printf("%2d ; %2d ; %.10f ; %n", vtc, tempom, chave);
  84. gravaArq.close();
  85. arq.close();
  86. } catch (Exception e) {
  87. System.out.println("ERRO - NÃO DEU CERTO");
  88. }
  89.  
  90. }
  91. }
  92. public static int pesquisa_bin(int array[], int chave){
  93. int esq = 0;
  94. int dir = array.length-1;
  95. int vtc = 0;
  96. int meio;
  97. System.out.println(" ");
  98. System.out.println("Procurando o número: " + chave);
  99.  
  100. do{
  101. meio =esq + (dir - esq)/2;
  102. vtc++;
  103. if(chave < array[meio]) {
  104. dir=meio-1;
  105. }
  106. vtc++;
  107. if(chave > array[meio])
  108. esq=meio+1;
  109. else
  110. return meio;
  111. }while(esq<=dir);
  112. System.out.println("Não encontramos este número e executamos" + vtc + " interações para isso");
  113. // PRECISO RETORNAR ESSE VTC E COLOCAR DENTRO DO gravaArq.write(..)
  114. return -1;
  115.  
  116. }
  117.  
  118. public static void imprime(int array[]){
  119. System.out.println(" ");
  120. for(int i=0; i<array.length;i++){
  121. System.out.print(array[i] + " ");
  122. }
  123. System.out.print(" ");
  124. }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement