Estructuras de Datos: Búsqueda Binaria, Secuencial o Hast: Implementación de Códigos

1- A continuación se muestra el código de implementación dev c++, de una búsqueda de la cual usted debe de indicar que búsqueda es (secuencial, binaria o hast) indicar que hace el código y que resultado arroja:

#include <cstdlib> //* declaración de la librería *//
#include <iostream> //* declaración de la librería *//
#define max 100 //*se define el máximo de elementos que puede utilizar el programa; esta definición la realiza el programador *//
using namespace std;

void ingresarArreglo(float A[max],int n) //* ingreso del tamaño del vector *//
{
int i;
 for(i=0;i<n;i++)
 {
 cout<<" A["<<i+1<<"]=";
 cin>>A[i];
 }
 cout<<endl;
}

void reportarVector(float V[max],int n)
{
 int i;
 for(i=0;i<n;i++)
 {
 cout<< V[i]<<"\t";
 }
 cout<<endl<<endl;
}


void ordenarSeleccion(float V[max],int n) //*método de ordenación por selección*//
{
 int i,j,k;
 float temp; //*se declara una variable temporal para poder comparar con los demás elementos del vector*//

 for(i=0;i<n-1;i++)
 {
 k=i;
 temp=V[i]; //* se le asigna a la variable temporal, el primer elemento del arreglo, de manera que facilite la búsqueda del menor elemento *//

 for(j=i+1;j<n;j++) //* el ciclo se inicia desde la segunda posición del vector, dado que la primera la ocupa la variable temporal *//
 {
 if(V[j]<temp) //* si se encontrase un valor menor al temporal, se intercambian de posición*//
 {
 k=j;
 temp=V[j];
 }
 } //* por ser un ciclo, se repetirá con todos los elementos menores al temporal *//
 V[k]=V[i] ;
 V[i]=temp;
 }
}


int busquedaBinaria(float V[max],int n ,int dato) //* método cuya función es una búsqueda binaria *//
{ //* sólo funcionará si el vector fue previamente ordenado*//
 int mitad,izq,der;
 izq=0;
 der=n-1;
 while(izq<=der) //* el elemento que esté a la izquierda debe ser menor en comparación al elemento de la derecha *//
 {mitad=(izq+der)/2 //* se calcula el elemento central, hasta encontrar el elemento buscado *//
 if(dato>V[mitad //* si el elemento buscado es mayor que el elemento definido en el centro, se procederá a buscar en la segunda mitad del vector *//
 izq=mitad+1 //* se define al primer valor de la búsqueda como el elemento mitad + 1 *//
 else if(dato<V[mitad //* si el elemento buscado es menor que el centro, se procede a buscar en la primera mitad *//
 der=mitad-1; 
 else return mitad; //* regresa el elemento encontrado *//
 }
 return -1; //* indica que no existe el elemento buscado *//
 }

int main(int argc, char *argv[])  //* menú principal *//
{
 float A[max];
 int n,p=0,dato;
 int pos;
 cout<<"ingrese numero de elementos :";
 cin>>n;
 ingresarArreglo(A,n); //* asigna al método el tamaño del vector *//
 cout<<"vector ingresado"<<endl;
 reportarVector(A,n); //* activa el método para su ejecución *//
 ordenarSeleccion(A,n); //*activa el método para su ejecución *//
 cout<<"el vector ordenado:"<<endl; //*muestra el vector ordenado *//
 reportarVector(A,n);
 cout<<"ingrese numero a buscar:"; //* usuario asigna el elemento a buscar dentro del vector*//
 cin>>dato;
 pos=busquedaBinaria(A,n,dato);
 { if(pos ==-1) //* indica que el dato no se encuentra en el vector *//
 cout<<"el dato no esta en el arreglo"<<endl;
 else
 cout<<"el dato se encontro en la posicion:"<<pos //* muestra en cuál posición se encuenta el dato buscado *//
+1<<endl;
 }
 system("PAUSE");
 return EXIT_SUCCESS;
}

Por lo tanto, podemos decir que estamos frente a una búsqueda binaria, la cual tuvo un ordenamiento previo para poder ejecutar el método. A su vez, tiene dos resultados, dependiendo el caso que se presente, si el elemento existe, arroja la posición en la que se encuentra, de lo contrario, indica que el elemento no está dentro del vector. 

2.- A continuación se muestra el código de implementación dev c++ ,de una búsqueda de la cual usted debe de indicar que búsqueda es (secuencial, binaria o hast) indicar que hace el código y que resultado arroja:

#include <stdlib.h>
#include <stdio.h>
//* librerías necesarias para una búsqueda hast *//
#include <time.h>
#include ``ordena.h''
#include ``hash.h''

int main(int argc,char *argv[]) //* menú principal *//
{
int num_min,num_max,incr,tamano,nveces;
char nombre[256];
short ret;
printf(``Practica numero 3, apartado 2\n'');
printf(``Realizada por: Vuestros nombres\n'');
printf(``grupo: Vuestro grupo\n'');

//* se procede a pedir al usuario los elementos para el llenado de la tabla *//
printf(``introduce el numero ninimo de elementos a
introducir en la tabla\n''); //* petición *//
scanf(``%d'',&num_min); //* recolección de datos *//
printf(``introduce el numero maximo de elementos a
introducir en la tabla\n''); //* petición *//
scanf(``%d'',&num_max); //* recolección de datos *// 
printf(``introduce el incremento\n''); //* petición *//
scanf(``%d'',&incr); //* recolección de datos *//
printf(''Introduce el tamano de la tabla hash \n''); //* petición *//
scanf(``%d'',&tamano); //* recolección de datos *//
printf(``Factor del retardo\n''); //* petición *//
scanf(``%d'',&nveces); //* recolección de datos *//
printf(``Introduce el nombre del fichero\n''); //* petición *//
scanf(``%s'',nombre); //* recolección de datos *//
ret=time_Hash(nombre,num_min,num_max,incr,tamano,hash_div,n //* cálculo de los tiempos *//
veces);
if(ret==ERR) { //* si existiera un error lo muestra en pantalla *//
printf("Error en la funcion time_Hash\n");
return ERR;
}
printf(``Fichero generado correctamente\n''); //* imprime el mensaje *//
return OK:
} //* fin del código *//

Se observa que estamos frente a una búsqueda hast, en la que se realiza la medición de los tiempos, escribiéndolos en un fichero, mediante el uso de una tabla hash. Como resultado el algoritmo arrojará  el valor ERR en caso de error y OK en caso contrario.

Comentarios