Algoritmo de búsqueda lineal o secuencial en C++
Es el algoritmo de búsqueda
más simple, pero el menos eficiente, no requiere que los datos o elementos
estén ordenados. Consiste en recorrer los registros o arreglos de manera
secuencial, es decir, recorriendo elemento por elemento comparando los datos
con la clave de búsqueda hasta que encuentre el dato solicitado o determine que
dicho dato no se encuentra. El inconveniente con este algoritmo es que si el
arreglo posee unas dimensiones muy grandes si el elemento a buscar está muy
lejos tardaría más tiempo en encontrarlo.
Supongamos
que, tenemos un arreglo de tamaño de cinco posiciones, la cual contiene los
siguientes elementos [2,6,7,4,3] y deseamos buscar el elemento 4 en dicho
arreglo. Lo que hace el algoritmo es comenzar desde la primera posición (que
puede iniciar con 1 o 0) y comparar la clave de búsqueda -en este caso el 4-
con la primera posición, si no lo encuentra entonces continua con la segunda,
en caso de que aún no lo encuentre repite el proceso de comparar con los
siguientes elementos. Dependiente el tipo de ciclo que se utilice para recorrer
el arreglo podemos hacer que se detenga cuando lo encuentre o que continúe
comparando los demás elementos por si queremos saber si se repite, pero con la
advertencia de que la ejecución tardaría más tiempo en terminal hasta llegar al
final.
El
algoritmo compararía los elementos del arreglo [2,6,7,4,3] de la siguiente manera:
·
[2,6,7,4,3]
·
¿2==4?
·
No
·
[2,6,7,4,3]
·
¿6==4?
·
No
·
[2,6,7,4,3]
·
¿7==4?
·
No
·
[2,6,7,4,3]
·
¿4==4?
·
Si
·
¡Elemento encontrado!
Ejemplo en C++
//Librerias
#include "stdafx.h"
#include
<iostream>
using
namespace std;
int main()
{
//Declarando
variables.
int clave, encontrado, n, i, j;
//Pedir
tamaño del arreglo.
cout << "Ingrese
dimensión del arreglo: ";
cin >> n;
Cout<<endl;
//Crear
la variable para el arreglo dinámico.
int*
arreglo = new int[n];
//LLenar
el arreglo.
for (i = 0;i < n;i++)
{
cout << "Ingrese
dato [" << i << "]: ";
cin >> arreglo[i];
}
//Pedir
dato o clave a buscar.
cout << "Ingrese
dato que desea buscar: " <<
endl;
cin >> clave;
//Declarar
variable de éxito de búsqueda.
encontrado = 0;
//Buscar
clave o dato en el arreglo.
for (j = 0;j < n;j++)
{
//Si el elemento de la posición actual del arreglo es
similar a la clave de búsqueda, despliega mensaje de encontrado.
if (arreglo[j] == clave)
{
cout << "Se encontro el " << clave << " en la
posicion [" << j << "]" << endl;
encontrado
= 1;
}
}
//Libera
arreglo dinámico en memoria.
delete[] arreglo;
//Si no se
encontró la clave despliega el mensaje de no encontrado.
if (encontrado != 1)
cout << "No se
encontro el dato" <<
endl;
system("pause");
return 0;
}
Comentarios
Publicar un comentario