Algoritmo de Búsqueda Lineal

Este método de búsqueda es válido tanto para vectores desordenados como ordenados.
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);
 }
}

Volver al índice

Volver a Búsqueda y Ordenación Interna



Comentarios

Entradas populares de este blog

Algoritmo de ordenación por mezcla natural

Algoritmo de ordenación por mezcla directa

Algoritmo de Ordenación por Intercambio Directo (Burbuja)