Sei sulla pagina 1di 3

Algoritmos de búsqueda: secuencial, binaria e

indexada.

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

Docente: MSc. Ingº Joseph Darwin Alvarado Tolentino


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

Docente: MSc. Ingº Joseph Darwin Alvarado Tolentino


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

Docente: MSc. Ingº Joseph Darwin Alvarado Tolentino