Algoritmo de Búsqueda Lineal
Para buscar un valor X en un vector no ordenado, se recorre el vector de un extremo al opuesto (de izquierda a derecha o de derecha a izquierda) hasta encontrar una componente cuyo valor sea X, o hasta que se haya recorrido todo el vector, lo que primero ocurra. En el segundo caso el algoritmo debe indicar la no existencia del valor buscado.
Si el valor X aparece varias veces, el algoritmo anterior indicará el valor cuyo índice sea más próximo al extremo de comienzo del recorrido.
Si el vector está ordenado (de forma ascendente, en nuestro caso), la búsqueda puede concluir cuando se encuentre un valor mayor que el buscado, lo que significa que X no aparece en el vector. En este caso se sale del bucle de búsqueda bien porque se ha encontrado un valor mayor o igual que X, o bien porque se ha llegado al último elemento del vector. La búsqueda habrá tenido éxito si el valor del elemento en el que se detuvo es igual a X.
Vector desordenado
PSEUDOCÓDIGO
MÓDULO busqueda_lineal
DATOS
PARÁMETROS
Recibe V() de tipo T
Recibe N entera
Recibe X de tipo T
VARIABLES
I entera
INICIO
I ← 1
Mientras ( (V(I) ≠ X) y (I < N) ) hacer
I ← I+1
fin-mientras
Si ( V(I) = X ) entonces
Escribir "Encontrado en posición", I
sino
Escribir "No encontrado"
fin-si
FIN
CÓDIGO C
/*Búsqueda de un elemento en un vector desordenado*/
busLinealDesord(int *v, int n, int x)
{
int i=0;
while((v[i]!=x) && (i<n))
{
i=i+1;
};
if(v[i]==x)
{
printf("Encontrado %d en posición %d \n",x,i+1);
}
else
{
printf("No encontrado %d \n",x);
}
}
Vector ordenado
MÓDULO busqueda_lineal_ordenado
DATOS
PARÁMETROS
Recibe V() de tipo T
Recibe N entera
Recibe X de tipo T
VARIABLES
I entera
INICIO
I ← 1
Mientras ( (V(I) < X) y (I < N) ) hacer
I ← I+1
fin-mientras
Si ( V(I) = X ) entonces
Escribir "Encontrado en posición", I
sino
Escribir "No encontrado"
fin-si
FIN
CÓDIGO C
/*Búsqueda de un elemento en un vector ordenado (de menor a mayor)*/
busLinealOrd(int *v, int n, int x)
{
int i=0;
while((v[i]<x) && (i<n))
{
i=i+1;
};
if(v[i]==x)
{
printf("Encontrado %d en posición %d \n",x,i+1);
}
else
{
printf("No encontrado %d \n",x);
}
}
Comentarios
Publicar un comentario