Es una operación que consiste en localizar un
elemento dentro de la estructura de datos
Búsqueda Secuencial (lineal):
Consiste en recorrer el arreglo, elemento por
elemento dentro de cada una de las casillas comparándola con el valor que se va
a buscar, al coincidir se finaliza la búsqueda.
#include <iostream>
#include <conio.h>
using namespace std;
char vector[20]={'a','b','c','d','e','f','g',…
char busca;
int i;
main ()
{
cout << "Elemento a buscar:" << endl
using namespace std;
char vector[20]={'a','b','c','d','e','f','g',…
char busca;
int i;
main ()
{
cout << "Elemento a buscar:" << endl
cin >> busca;
for(i = 0; i<20; i++){
if (vector[i]==busca) cout << "Se encontro coincidencia" << endl
if (vector[i]==busca) cout << "Se encontro coincidencia" << endl
}
Búsqueda Binaria:
Es el método más recomendado para encontrar elementos
en un arreglo ordenado, este proceso inicia comparando el elemento central del
arreglo con el elemento que se desea buscar, si existe coincidencia se finaliza
la búsqueda, Sino el elemento que se desea buscar se ubica en el lado izquierdo
(inferior) o en el lado derecho
(superior) generando una división, Si el elemento buscado es mayor se procede a
hacer búsqueda binaria en el lado derecho (superior), si el valor buscado es menor
se realiza la búsqueda binaria en el
lado izquierdo (inferior), así sucesivamente hasta encontrar el elemento. Es
decir, este método realiza en un arreglo división y división hasta encontrar el
elemento.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void mostrarArreglo(const int[], int); //prototipo de funcion que recibe un arreglo constante
int busquedaBinaria(const int[], int, int); //arreglo, tamano, clave
void ordenarArreglo(int[], int); //prototipo que modifica y ordena el arreglo
void intercambiar(int&, int&); //prototipo, intercambia los valores de dos elementos
int main()
{
int clave =0;
const int tamano = 15;
int arreglo[tamano] = {25,17,13,16,41,32,12,115,95,84,54,63,78,21,10};
//ordenamos el arreglo para que funcione la busquedaBinaria
ordenarArreglo(arreglo,tamano);
cout << "Elementos del arreglo: " << endl;
mostrarArreglo(arreglo,tamano);
cout << "Indique un valor a buscar y se le devolvera el indice: " << endl;
cin >> clave;
cout<< "Su valor se encuentra en arreglo["<<busquedaBinaria(arreglo,tamano,clave)<<"]" << endl;
cout << "Fin del programa :)" << endl;
return 0;
} //fin de main
void mostrarArreglo(const int arreglo[], int tamano)
{
for (int i = 0 ; i < tamano ; i++)
cout << "arreglo[" << i << "]=" << arreglo[i] << endl;
}
int busquedaBinaria(const int arreglo[], int tamano, int clave)
{
int Iarriba = tamano-1;
int Iabajo = 0;
int Icentro;
while (Iabajo <= Iarriba)
{
Icentro = (Iarriba + Iabajo)/2;
if (arreglo[Icentro] == clave)
return Icentro;
else
if (clave < arreglo[Icentro])
Iarriba=Icentro-1;
else
Iabajo=Icentro+1;
}
return -1;
}
void ordenarArreglo(int arreglo[], int tamano)
{
for (int i = 0; i< tamano -1 ; i++)
for (int j = 0; j< tamano -1 ; j++)
if (arreglo[j] > arreglo[j+1])
intercambiar(arreglo[j],arreglo[j+1]);
}
void intercambiar(int &a, int &b)
{
int tmp = b;
b = a;
a = tmp;
}
No hay comentarios.:
Publicar un comentario