2
« en: 11 de Julio 2018, 02:00 »
Buenas Noches, actualmente estoy intentando "autoaprender" lógica de programación y con ella lenguaje C, en este momento desarrollo una tarea de búsqueda binaria recursiva, pero por mas vueltas que le doy al algoritmo no doy con la respuesta que requiero....Alguien puede auxiliarme...
Saludos
Acá el código:..
Algoritmo recursivo de busqueda binaria
#include <stdio.h>
#include <stdlib.h>
#define dimension 3
main( )
{
int indice,j,valor;
int pos_menor,alto,central,bajo;
float arreglo[dimension];
float menor,AUX;
/*Leer Vector*/
for(indice=0;indice<dimension;indice++)
{
printf("arreglo[%i]= ",indice);//Ingresa los valores para el arreglo//
scanf("%f",&arreglo[indice]);
}
//Orden por Selección//
for(indice=0;indice<dimension;indice++)
{
menor=arreglo[indice];//Asignamos el contenido del arreglo a la variable menor//
pos_menor=indice;//Asignamos el valor del indice del arreglo a la variable pos_menor/
for(j=indice+1;j<dimension;j++)//Ciclo iterativo para ordenar por selección//
{
if(menor>arreglo[j])// Sentencia if para evaluar que la variable menor sea mayor ha arreglo//
{
menor=arreglo[j];//Se asigna el contenido del arreglo en la posición j, a la variable menor//
pos_menor=j;//Asignamos el contenido o valor de j a la variable pos_menor//
}
}
//Intecambiar//
AUX=arreglo[indice];//Se usa para almacenar el contenido del arreglo, en la posicion indicada por el indice//
arreglo[indice]=arreglo[pos_menor];//Igualamos el contenido de los indices del arreglo con los de arreglo pos_menor//
arreglo[pos_menor]=AUX;//Se asignan a la variable auxiliar los valores anteriores//
}
//Imprimir o mostrar el Vector en orden ascendente//
for(indice=0;indice<dimension;indice++)
{
printf("arreglo[%i]=%f\n",indice,arreglo[indice]); //Muestra el vector ordenado, en orden ascendente, %i indica numeros enteros//
}
printf("\n Que valor desea buscar? ");//indicamos al usuario que diga cual valor desea buscar//
scanf("%f",&valor);//capturamos el valor anterior anterior en la variable valor//
bajo=0;//asignamos el valor 0 a la variable bajo//
alto=dimension-1;//restamos 1 a la variable dimension, el resultado lo asignamos a la variable alto//
central=(bajo+alto)/2;//sumanos los contenidos de alto y bajo lo dividimos entre 2, el resultado lo asignamos a la variable central//
//Busqueda Binaria//
while ((bajo<=alto)&&(arreglo[bajo]!=valor))//Evaluamos que el valor de la variable bajo sea menor o igual al de alto y que el valor del arreglo en central sea diferente al valor que le usuario esta buscando//
{
if(valor<arreglo[central])//Verificamos si el valor introducido por el usuario, es menor al de la variable en central//
{
}
else
{
bajo=central+1;
central=(bajo+alto)/2;
}
if(valor = arreglo[central])
{
printf("El valor se encuentra en la posicion:%i",arreglo[central],valor);
}
else
{
printf("El valor no se encuentra");
}
getch();
system("PAUSE");
return 0;
}
}