ACTIVIDAD 1.

IDENTIFICACIÓN DE MÉTODOS DE BÚSQUEDA
ALUMNO: JOSÉ DANIEL WONG BE

ESTRUCUTURA DE DATOS

Siendo el array de una dimensión o lista una estructura de acceso directo y a su vez de acceso secuencial. existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento. como en el último. y será la posición del elemento buscado o cero. Búsqueda Secuencial La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo. en promedio. el programa tendrá que comparar el valor buscado con la mitad de los . 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.Métodos búsqueda Métodos 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. Por lo tanto. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado (clave). Dado que el arreglo no está en ningún orden en particular. 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.

El método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos no ordenados. Los elementos en el índice al igual que los elementos en el archivo. Si el índice es de un octavo del tamaño del archivo. Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencial indexado. deben estar ordenados en la llave. Codificación. 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. } } return(index). Algoritmo de Búsqueda Secuencial Indexada: PROCEDURE B_S_INDEXADA (llave:integer. se representa en el índice cada octavo registra el archivo. // searching.elementos del arreglo. Codificación: void sequential_search(int x[100]. } Búsqueda Secuencial Indexada Descripción de la técnica. while((index <> { // Loop while the number is not found and while more elements remain. Cada elemento en el índice consta de una llave kindex y un apuntador al registro en el archivo que corresponde a kindex.n:integer. var pocis:integer). increment subscript index. if(x[index] != search_num) { // If current element is not the one for which we are index++. . int search_num) { int index = 0. Var i.

begin f:=false. while(j<=lsup) ands (not f) do if k[j]="llave" then f:="true" else inc(j). j:=linf." end. while (i f:= true. else inc(i).f:boolean. if f then posic:="j" else posic:="0. if i=1 then linf:=1 else linf:=pindex[i-1]. f:=false. if f then lsup:=pindex[i]-1 else lsup:=n. i:=1. Búsqueda Binaria .

El mínimo de 1 y en promedio ½ log2 n. lo cual implica que el valor de la llave buscada no esta en la lista. Si el elemento buscado es mayor se procede a hacer búsqueda binaria en el subarray superior. En la práctica. La búsqueda binaria utiliza un método de `divide y vencerás ‘para localizar el valor deseado. · Si la llave buscada es menor que la analizada repetir proceso en mitad superior. Algoritmo: · Se compara la llave buscada con la llave localizada al centro del arreglo. utilizando el elemento central de esa sub lista. Si no ocurre así. Por esta razón la búsqueda binaria exige una ordenación previa del archivo. se debe cambiar el segmento a considerar al segmento que está a la izquierda de tal sitio central. pero no siempre. el método citado anteriormente se denomina búsqueda binaria. entonces la búsqueda ha terminado. sino en la mitad inferior. La búsqueda binaria es un método eficiente siempre que el vector esté ordenado. . esto suele suceder. En caso contrario. Con este método se examina primero el elemento central de la lista. Ventajas de la técnica. se determinar si el elemento buscado será en la primera o la segunda mitad de la lista y a continuación se repite este proceso. El proceso comienza comparando el elemento central del arreglo con el valor buscado. El esfuerzo máximo para este algoritmo es de log2n. el elemento buscado será mayor o menor en sentido estricto que el central del arreglo. Se puede aplicar tanto a datos en listas lineales como en árboles binarios de búsqueda. · Si la llave analizada corresponde a la buscada fin de búsqueda si no. Si ambos coinciden finaliza la búsqueda. · Debe conocerse el número de registros.La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo ordenado. si el elemento buscado es menor que el contenido de la casilla central. · 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 . 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. si éste es el elemento buscado. Si los datos que se buscan están clasificados en un determinado orden.

En esencia. Supongamos la lista 1231 1473 1545 1834 1892 . y mantener ese archivo ordenado es muy costoso. Desventajas de la técnica.La búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar en una lista. Solución: Cuando el elemento no se encuentra en la raíz. Este método. Es más rápido por su recursividad. este es el método más eficiente de buscar en una lista ordenada sin emplear tablas o índices adicionales. exige que los datos estén ordenados. No revisa todos los elementos del archivo. sin embargo. requiere que todos los elementos estén ordenados Esta búsqueda más de uno o dos accesos si el archivo es enorme. El código del procedimiento de esta búsqueda es corto en comparación con las demás técnicas de búsqueda. con una sola comparación eliminamos la mitad de la tabla. La búsqueda binaria tiene. sobre aquel que nos interese (al estar ordenado solo debemos ir por una de las ramas). su mayor ventaja es con los archivos extensos. Principales Aplicaciones. 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. Ejemplo: Árbol Binario de Búsqueda: Se distinguen 2 casos triviales con solución directa: árbol vacío (elemento no encontrado) o raíz del árbol. sin embargo. La combinación de resultados es trivial: la solución del subproblema es también la del problema global. dividimos el árbol en 2 subarboles (izquierda y derecha) y aplicamos ABB.

Búsqueda por Hash Definición: Hasta ahora las técnicas de localización de registros vistas. se examina el número central 1898 en la sexta posición. emplean un proceso de búsqueda que implica cierto tiempo y esfuerzo. Un problema potencial . se desprecia la primera sub lista y nos centramos en la segunda 1983 2005 2446 elemento central 2685 3200 El número central de esta sub lista es 2446 y el elemento buscado es 1983 menos que 2446. mientras que la búsqueda secuencial hubiese necesitado siete. que es el buscado. Se han necesitado tres comparaciones. eliminamos la segunda sub lista y nos queda 1983 2005 Como no hay término central elegimos el término inmediatamente anterior al término central. Ya que 1983 es mayor que 1898.1898 elemento central 1983 2005 2446 2685 3200 Si está buscando el elemento 1983. El siguiente método nos permite encontrar directamente el registro buscado. 1983. La idea básica de este método consiste en aplicar una función que traduce un conjunto de posibles valores llave en un rango de direcciones relativas.

1. debido a que los valores de las llaves son independientes del espacio de direcciones .encontrado en este proceso. es que tal función no puede ser uno a uno. cuando R(k1 )= R(k2) Pero : K1 diferente de K2 decimos que hay una colisión. A dos llaves diferentes que les corresponda la misma dirección relativa se les llama sinónimos. las direcciones calculadas pueden no ser todas únicas.dirección  Técnicas de direccionamiento directo  Métodos de tabla Hash  Métodos de Hashing Pero el término mas usado es el de hashing. Ventajas de la técnica. Al cálculo que se realiza para obtener una dirección a partir de una llave se le conoce como función hash. puesto que se traducen internamente a direcciones fáciles de localizar 2. Se pueden usar los valores naturales de la llave.a. A las técnicas de calculo de direcciones también se les conoce como:   Técnicas de almacenamiento disperso Técnicas aleatorias  Métodos de transformación de llave . Se logra independencia lógica y física.

Solo permite acceso por una sola llave . Desventajas de la técnica. No se requiere almacenamiento adicional para los índices.3. El archivo no esta clasificado 3. 1. No permite llaves repetidas 4. No pueden usarse registros de longitud variable 2.

Cuadro comparativo metodos ordenamiento y busqueda .