metodo de búsqueda

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
METODO DE BÚSQUEDA
La búsqueda es una operación que tiene por objeto la localización de un elemento dentro
de la estructura de datos. A menudo un programador estará trabajando con grandes
cantidades de datos almacenados en arreglos y pudiera resultar necesario determinar si
un arreglo contiene un valor que coincide con algún valor clave o buscado.
Siendo el array de una dimensión o lista una estructura de acceso directo y a su vez de
acceso secuencial, encontramos dos técnicas que utilizan estos dos métodos de acceso,
para encontrar elementos dentro de un array: búsqueda lineal y búsqueda binaria.
Búsqueda Secuencial
La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo.
Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado
(clave). Se empieza con la primera casilla del arreglo y se observa una casilla tras otra
hasta que se encuentra el elemento buscado o se han visto todas las casillas. El resultado
de la búsqueda es un solo valor, y será la posición del elemento buscado o cero. Dado
que el arreglo no está en ningún orden en particular, existe la misma probabilidad de que
el valor se encuentra ya sea en el primer elemento, como en el último. Por lo tanto, en
promedio, el programa tendrá que comparar el valor buscado con la mitad de los
elementos del arreglo.
El método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos no
ordenados.
Codificación:
void sequential_search(int x[100], int search_num)
{
int index = 0;
while((index <>
{
1
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
// Loop while the number is not found and while more elements remain.
if(x[index] != search_num)
{ // If current element is not the one for which we are
index++; // searching, increment subscript index.
}
}
return(index);
}
Búsqueda Secuencial Indexada
Un método popular para superar las desventajas de los archivos secuenciales es el del
archivo secuencial indexado; pero implica un aumento en la cantidad de espacio
requerida.
Funciona de la siguiente manera:
Se reserva una tabla auxiliar llamada índice además del archivo ordenado mismo. Cada
elemento en el indice consta de una llave kindex y un apuntador al registro en el archivo
que corresponde a kindex. Los elementos en el indice al igual que los elementos en el
archivo, deben estar ordenados en la llave. Si el indice es de un octavo del tamaño del
archivo, se representa en el indice cada octavo registra el archivo.
Codificación.
Algoritmo de Búsqueda Secuencial Indexada:
PROCEDURE B_S_INDEXADA (llave:integer; var pocis:integer);
Var i,n:integer;
f:boolean;
begin
f:=false;
i:=1;
while (i
f:= true;
else
2
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
inc(i);
if i=1 then
linf:=1
else
linf:=pindex[i-1];
if f then
lsup:=pindex[i]-1
else
lsup:=n;
j:=linf; f:=false;
while(j<=lsup) ands (not f) do
if k[j]="llave" then f:="true"
else
inc(j);
if f then posic:="j"
else
posic:="0;"
end;
Búsqueda Binaria
La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo
ordenado. El proceso comienza comparando el elemento central del arreglo con el valor
buscado. Si ambos coinciden finaliza la búsqueda. Si no ocurre así, el elemento buscado
será mayor o menor en sentido estricto que el central del arreglo. Si el elemento buscado
es mayor se procede a hacer búsqueda binaria en el subarray superior, si el elemento
buscado es menor que el contenido de la casilla central, se debe cambiar el segmento a
considerar al segmento que está a la izquierda de tal sitio central.
3
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Si los datos que se buscan están clasificados en un determinado orden, el método citado
anteriormente se denomina búsqueda binaria.
La búsqueda binaria utiliza un método de `divide y vencerás para localizar el valor
deseado. Con este método se examina primero el elemento central de la lista; si éste es el
elemento buscado, entonces la búsqueda ha terminado.
En caso contrario, se determinar si el elemento buscado será en la primera o la segunda
mitad de la lista y a continuación se repite este porceso, utilizando el elemento central de
esa sublista.
Se puede aplicar tanto a datos en listas lineales como en árboles binarios de
búsqueda. Los prerrequisitos principales para la búsqueda binaria son:
· La lista debe estar ordenada en un orden específico de acuerdo al valor de la llave.
· Debe conocerse el número de registros.
Algoritmo:
· Se compara la llave buscada con la llave localizada al centro del arreglo.
· Si la llave analizada corresponde a la buscada fin de búsqueda si no.
· Si la llave buscada es menor que la analizada repetir proceso en mitad superior, sino
en la mitad inferior.
· El proceso de partir por la mitad el arreglo se repite hasta encontrar el registro o
hasta que el tamaño de la lista restante sea cero , lo cual implica que el valor de la
llave buscada no esta en la lista.
El esfuerzo máximo para este algoritmo es de log2n. El mínimo de 1 y en promedio ½
log2 n.
Ventajas de la técnica.
La búsqueda binaria es un método eficiente siempre que el vector esté ordenado. En la
práctica, esto suele suceder, pero no siempre. Por esta razón la búsqueda binaria exige
una ordenación previa del archivo.
La búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar
en una lista. Este método, sin embargo, exige que los datos estén ordenados.
4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Es mas rapido por su recursividad, su mayor ventaja es con los archivos extensos.
El codigo del procedimiento de esta busqueda es corto en comparacion con las demas
técnicas de búsqueda.
En esencia, con una sola comparación eliminamos la mitad de la tabla; este es el metodo
más eficiente de buscar en una lista ordenada sin emplear tablas o indices adicionales.
Desventajas de la técnica.
La búsqueda binaria tiene, sin embargo, inconvenientes a resaltar:
El archivo debe estar ordenado y el almacenamiento de un archivo ordenado suele
plantear problemas en las inserciones y eliminaciones de elementos.
No revisa todos los elementos del archivo, requiere que todos los elementos estén
ordenados
Esta búsqueda más de uno o dos accesos si el archivo es enorme; y mantener ese
archivo ordenado es muy costoso.
5
Descargar