Advertisement
Jvsierra

Visualizando busca binária

Jul 2nd, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. #define TF 10
  5.  
  6. void imprimeVetor(int * vet, int posicaoMeio, int comeco, int fim);
  7. int buscaBinaria(int * vet, int numElementos, int elemento);
  8.  
  9. int main()
  10. {
  11.     int i, vet[TF], ele, tl = 0, pos, res;
  12.  
  13.     printf("Digite um numero:\n");
  14.     scanf("%d", &ele);
  15.  
  16.     while(tl < TF && ele > 0)
  17.     {
  18.         pos = 0;
  19.  
  20.         while(pos < tl && ele > vet[pos])
  21.             pos++;
  22.  
  23.         for(i = tl; i > pos; i--)
  24.             vet[i] = vet[i - 1];
  25.  
  26.         vet[pos] = ele;
  27.  
  28.         tl++;
  29.  
  30.         if(tl < TF)
  31.         {
  32.             printf("Digite um numero:\n");
  33.             scanf("%d", &ele);
  34.         }
  35.     }
  36.  
  37.     printf("Digite o elemento:\n");
  38.     scanf("%d", &ele);
  39.  
  40.     res = buscaBinaria(vet, tl, ele);
  41.  
  42.     if(res == -1)
  43.         printf("Elemento inexistente\n");
  44.     else
  45.         printf("Elemento na posicao %d\n", ele);
  46.  
  47.     getch();
  48. }
  49.  
  50. void imprimeVetor(int * vet, int posicaoMeio, int comeco, int fim)
  51. {
  52.     int i;
  53.  
  54.  
  55.     for(i = 0; i < TF; i++)
  56.     {
  57.         if(i < comeco || i > fim)
  58.             printf("   ");
  59.         else
  60.         {
  61.             if(i == posicaoMeio)
  62.                 printf("%3d*", vet[i]);
  63.             else
  64.                 printf("%3d", vet[i]);
  65.         }
  66.     }
  67.  
  68.     printf("\n");
  69. }
  70.  
  71. int buscaBinaria(int * vet, int numElementos, int elemento)
  72. {
  73.     int inicio, fim, meio;
  74.  
  75.     inicio = 0;
  76.     fim = numElementos - 1;
  77.  
  78.     while(inicio <= fim)
  79.     {
  80.         meio = (inicio + fim) / 2;
  81.  
  82.         imprimeVetor(vet, meio, inicio, fim);
  83.  
  84.         if(vet[meio] == elemento)
  85.             return meio;
  86.         else if(vet[meio] < elemento)
  87.             inicio = meio + 1;
  88.         else if(vet[meio] > elemento)
  89.             fim = meio - 1;
  90.     }
  91.  
  92.     return -1;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement