Búsqueda Secuencial

Este algoritmo compara uno a uno los elementos del arreglo hasta recorrerlo por completo indicando si el número buscado existe. En éste caso no se ordenará la lista de elementos a diferencia de otros algoritmos.

Su implementación es la siguiente:

Programa: Búsqueda secuencial
Variables
T=10:entero
a[T],temp,i,j,n:entero
x:binario
Inicio
  escribir "Llenando arreglo con números aleatorios"
  desde i=0 hasta i< T incremento 1 hacer
    a[i]=númeroaleatorio
  fin desde
  escribir "Numero a buscar? "
  leer n
  x=falso
  desde i=0 hasta i< T incremento 1 hacer
    si a[i] = n entonces
      escribir "Valor encontrado"
      escribir "Posición:”, i
      x=verdadero
    fin si
  fin desde
  si x=falso entonces
    escribir “No se encontró el el número”
  fin si
  escribir “El arreglo era:"
  desde i=0 hasta i< T incremento 1 hacer
  escribir a[i]
fin desde Fin

 

Búsqueda Binaria

Este algoritmo permite buscar de una manera más eficiente un dato dentro de un arreglo, para hacer esto se determina el elemento central del arreglo y se compara con el valor que se esta buscando, si coincide termina la búsqueda y en caso de no ser así se determina si el dato es mayor o menor que el elemento central, de esta forma se elimina una mitad del arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener solo un elemento en el arreglo. Para poder aplicar este algoritmo se requiere que el arreglo este ordenado. Su implementación es la siguiente:

Variables
T=10:entero
a[T],temp,i,j,n,b,busca,al,c: entero
x: binario
Inicio
escribir "Llenando arreglo con números aleatorios"
desde i=0 hasta i< T incremento 1 hacer
a[i]=númeroaleatorio
fin desde
escribir "Numero a buscar? "
leer n
//ordenando el arreglo... (burbuja)

        desde j=1 hasta j <= t incremento 1 hacer
                desde i=0 hasta i<(t – 1) incremento 1 hacer
                        si a[i] > a[i+1] entonces
                                   temp = a[i]
                                   a[i] = a[i+1]
                                   a[i+1] = temp
                        fin si
		    fin desde
        fin desde
        //buscando...
        ba = 0
        al = t-1
        c = (ba+al)/2;

mientras (ba < al) && (busca != a[c])

		si busca > a[c]
			b = c+1
		si no
			al = c-1
		fin si
		c=(b+al)/2;
fin mientras

si busca = a[c]
	escribir busca, "encontrado en posición", c
else
	escribir “no existe”, busca
fin si

escribir “El arreglo era:"
desde i=0 hasta i< t incremento 1 hacer
escribir a[i]
Fin

 

Búsqueda indexada

Mediante cada elemento del array índice se asocian grupos de elementos del array inicial. Los elementos en el índice y en el array deben estar ordenados. El método consta de dos pasos: Buscar en el array índice el intervalo correspondiente al elemento buscado y restringir la búsqueda a los elementos del intervalo que se localizó previamente. La ventaja es que la búsqueda se realiza en el array de índices y no en el array de elementos. Cuando se ha encontrado el intervalo correcto se hace segunda búsqueda en una parte reducida del array. Éstas dos búsquedas pueden ser secuenciales o binarias y, el tiempo de ejecución dependerá del tipo de búsqueda utilizado en cada uno de los arrays.

 

Algoritmo que busca genera un índice basado en un archivo de texto, y que busca los registros que pide el usuario en él.

Programa: Búsqueda secuencial
Variables
T: entero
fDT: archivo
a[100000],temp,i,j,n,k: entero
x: binario
c: caracter
Inicio
cargararchivo “datos.txt” en fDAT
i=0

mientras no fDAT.eof hacer
a[i+1]=leerarchivo(fDAT, posición 1+i*100)
T=i
i=i+1
fin mientras
c=”s”

hacer

  escribir "Número identidad del registro a desglosar: "
  leer n
  x=falso
  i=0
  hacer
  i=i+1
  si a[i] = n entonces 
  j=i
  x=verdadero
  fin si
  mientras i<T && x=falso

  si x=falso entonces
  escribir “No se encontró el número”
  si no 
   desde i=0 hasta 98 incremento 1 hacer
      escribircaracter leerarchivo(fDAT, posición (1+i)+(100*j))
   fin desde
  fin si

  escribir “Desea realizar otra consulta?(s/n)”
  leer c

mientras c=”s”
Fin

Share This