Recursión: Búsqueda dicotómica recursiva

busqueda dicotomica recursiva.html
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TAM 100

void bus(int dato, int ini, int fin, int *CB);
void imprimeCB(int *CB){
	int i;
	for(i=0; i<TAM-1; i++){
		printf("%d ",CB[i]);
	}
}

int main(){
	int CB[TAM];
	int ini=0, fin=TAM-1, dato, i;
	
	srand((unsigned int)time(NULL));
	for(i=0; i<TAM; i++){
		CB[i] = (int) (rand()%100);
	}
	imprimeCB(CB);
	dato = (int) (rand()%100);
	CB[i] = dato;
	printf("\n\nDato a buscar: %d\n",dato);
	bus(dato, ini, fin, CB);
	
	system("pause");
	return 0;
}

void bus(int dato, int ini, int fin, int *CB2){
	int mitad;
	mitad = (ini+fin)/2;
	if(ini==fin){
		printf("\nEl elemento no esta en el array\n");
	}
	else if
		(dato==CB2[mitad]){
			printf("\nPosicion %d\n",mitad);
		}
	
	else if
		(dato<CB2[mitad]){
			fin=mitad-1;
			bus(dato, ini, fin, CB2);
		}
	
	else if
		(dato > CB2[mitad]){
			ini=mitad+1;
			bus(dato,ini,fin,CB2);
		}
	
	else if
		(dato==CB2[mitad]){
			printf("Posicion %d\n",mitad);
		}
	
	else
		printf("\nElemento no esta en el array\n");
	
}

No hay comentarios:

Publicar un comentario