fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int buscaTernaria(int size, int *arr, int num);
  5.  
  6. int main(){
  7. int n = 10;
  8. int v[] = {6,8,27,53,104,225,369,507,801,999};
  9. int num = 801;
  10. int pos = buscaTernaria(n, v, num);
  11. if(pos != -1) printf("O número %d é elemento de índice %d do vetor", num, pos);
  12. else printf("Número não encontrado como elemento do vetor");
  13. }
  14.  
  15. int buscaTernaria(int size, int *arr, int num){
  16. int inicio = 0;
  17. int fim = size-1;
  18.  
  19. while(inicio<=fim){
  20. int terco_direito = inicio + (fim - inicio )/3;
  21. int terco_esquerdo = fim - (fim - inicio )/3;
  22. if (num == arr[terco_direito]) return terco_direito;
  23. if (num == arr[terco_esquerdo]) return terco_esquerdo;
  24. if (num < arr[terco_direito]){
  25. fim = terco_direito - 1;
  26. continue;
  27. }
  28. if (num > arr[terco_esquerdo]){
  29. inicio = terco_esquerdo + 1;
  30. continue;
  31. }
  32. inicio = terco_direito + 1;
  33. fim = terco_esquerdo - 1;
  34. }
  35. return -1;
  36. }
Success #stdin #stdout 0s 5548KB
stdin
Standard input is empty
stdout
O número 801 é elemento de índice 8 do vetor