void buscar(const Vector &par_vector,const int &par_dato,const unsigned &par_tipo){ switch (par_tipo){ case 1: busqueda_secuencial(par_vector,par_dato); break; case 2: busqueda_binaria(par_vector,par_dato); break; } }
int busqueda_binaria(int* vector, int tamanio, int inicio, int fin, int valor){ static int cuenta = 0; cuenta++; if (cuenta < 40){ //printf("%d ==> %d \n", inicio, fin); } if (inicio > fin){ return -1; } int medio = ((inicio + fin)/2); if (cuenta < 40){ /*printf("inicio + fin div 2: %d\n", ((inicio + fin)/2)); printf("Medio: %d\n", medio);*/ } if (vector[medio] == valor){ return medio; } else if (vector[medio] > valor){ return busqueda_binaria(vector, tamanio, inicio, medio - 1, valor); } else { return busqueda_binaria(vector, tamanio, medio + 1, fin, valor); } }
int llamar(int *vector, int tamanio, int valor){ return busqueda_binaria(vector, tamanio, 0, tamanio -1, valor); }