SlideShare a Scribd company logo
1 of 31
Búsquedas
Unidad 4
ING. ALVARO ENRIQUE RUANO
Ejercicio Ordenamientos
Para el siguiente listado de arreglos, aplicar todos los métodos de
ordenamiento (ascendente) vistos en clase. Se deberán presentar todas las
tablas intermedias realizadas durante el proceso así como el listado de
intercambios realizados:
• 45,65,23,46,78,11,23,21,20,0
• 7,6,5,4,3,2,1
Contenido
● Búsqueda
● Métodos de Búsqueda
o Secuencial
o Binaria
o Hashing
Búsqueda
● La búsqueda es una de las aplicaciones más importantes de las
computadoras.
● También es conocida como recuperación o searching.
● Es una operación para encontrar la posición de un elemento entre un
conjunto de elementos dados: lista, tabla o archivo.
Búsqueda
● Las búsquedas pueden clasificarse según el medio de almacenamiento
donde se encuentran los registros:
o Búsqueda interna: Es aquella que se realiza completamente en la
memoria RAM
o Búsqueda externa: Es aquella que se realiza dentro de archivos en
almacenamiento secundario (disco duro, memoria flash, cinta, etc.).
Búsqueda
● Existen diversos algoritmos de búsqueda, pero la elección dependerá de
la forma en que se encuentran almacenados los datos.
● Por definición, se considera a un algoritmo como “algoritmo de búsqueda”
si cumple las siguientes dos condiciones:
o Puede determinar si X pertenece al conjunto e indicar su posición
o Puede determinar si X no pertenece al conjunto
Búsqueda
● Existen diversos algoritmos de búsqueda, pero la elección dependerá de
la forma en que se encuentran almacenados los datos.
o Secuencial
o Binario
o Por transformación de claves hash.
● Por definición, se considera a un algoritmo como “algoritmo de búsqueda”
si cumple las siguientes dos condiciones:
o Puede determinar si X pertenece al conjunto e indicar su posición
o Puede determinar si X no pertenece al conjunto
Búsqueda Secuencial
● Es la forma más sencilla de búsqueda.
● Se dice que es una exploración secuencial del listado, de ahí viene el
nombre del método.
● Consiste en comparar cada elemento del listado contra el valor deseado.
● Tiene dos condiciones de finalización
o Cuando se encuentra el valor
o Cuando se termina de leer por completo el listado
Búsqueda Secuencial
● Ventajas
o Es sencillo de implementar ya que únicamente se utilizan estructuras
repetitivas.
o No requiere que el listado esté ordenado o en algún estado especial.
● Desventajas
o El poco eficiente ya que se debe recorrer por completo el arreglo.
o Tiempo excesivo de procesamiento en vectores grandes.
o Se requerirán (N+1)/2 comparaciones en promedio.
o En el peor de lo casos se requieren N comparaciones.
Algoritmo 1
Mejoras al Algoritmo 1
● El algoritmo 1 realiza dos comparaciones en cada iteración:
o Una para comparar si se encuentra el elemento t
o La otra para evaluar si ya se llegó al final del vector
● Se puede mejorar el rendimiento disminuyendo a una comparación por
iteración al agregar un “valor centinela” que permita descubrir si ya se
terminó de recorrer el vector.
● Se utiliza el valor buscado como valor centinela y se coloca al final del
arreglo (en una posición adicional) para forzar a que el algoritmo siempre
tenga éxito encontrando el valor buscado.
Algoritmo 2
Búsqueda Binaria
● Es eficiente cuando tratamos con conjuntos grandes de datos.
● Requiere que los datos estén ordenados.
● Se basa en la división sucesiva del espacio ocupado por el arreglo en
sucesivas mitades.
● Se basa en la estrategia de “divide y vencerás”
Búsqueda Binaria
o Se examina el elemento central de la lista.
o Si es el elemento buscado, se termina la búsqueda.
o Si no es el elemento buscado, se determina si el elemento buscado es
mayor o menor al central. Esto nos indicará si este elemento se encuentra
en la primera mitad de la lista o en la segunda mitad.
o Se elige la nueva mitad a evaluar y se repite este proceso utilizando el
elemento central de cada sublista.
Ejemplo búsqueda exitosa
Ejemplo búsqueda sin éxito
Algoritmo
Búsqueda Binaria
● Cantidad de comparaciones en el peor caso:
● Cantidad de comparaciones en el caso promedio
Comparación
Hashing
● También llamado búsqueda mediante transformación de claves.
● No se requiere que los datos estén ordenados.
● Consiste en convertir una clave dada (valor de búsqueda) en una
dirección dentro del listado donde se almacenan los valores (al momento
del almacenamiento).
● Esta misma conversión se realizará al momento de realizar la búsqueda,
obteniendo de forma inmediata la posición dentro del listado.
Hashing
● Existen casos donde es sencillo encontrar una función de conversión.
o Por ejemplo una lista de 100 empleados, donde el código de
empleado es un número del 1 al 100, la correspondencia es directa.
● Existen otros casos donde no es posible establecer una relación como el
inciso anterior.
o Por ejemplo, si necesitamos que el campo de búsqueda sea el
número de documento de identificación (varios millones) para una
muestra de 100 empleados.
Hashing
Hashing
● La conversión entre las claves y la posición en el listado es realizada por
una función denominada “función de conversión” o “función hash”.
● Se dice que el objetivo de la función H(k) es convertir una clave k en una
dirección d.
● En el ejemplo anterior, la función H(k) convierte valores en un rango de
varios millones (número de documento de identificación) a un rango de
100 valores (tamaño del arreglo o lista).
Colisiones
● Existen casos donde para dos valores k de entrada, se producirá la misma
salida d, estos casos se llaman “Colisiones”.
● La colisión se soluciona definiendo la forma en que se se encuentra un
valor alternativo (d1, d2, …, dn) para almacenar el registro en esta nueva
posición.
● El éxito de esta técnica está en dos factores:
o La elección de la función H
o El procedimiento para manejo de colisiones
Colisiones
Solución de colisiones utilizando listas.
Métodos de Hashing
Truncamiento:
● Ignora una parte de la clave y se utiliza la parte restante directamente
como índice.
● Es un método muy rápido pero falla para distribuir las claves de forma
uniforme.
Ejemplo:
● Entrada: 7490312
● Proceso: Se trunca 90312
● Salida: 74
Métodos de Hashing
Plegamiento:
● Se divide la clave en diferentes partes.
● Las distintas partes se combinan de un modo conveniente, a menudo
suma o multiplicación
● Es recomendable que las partes tengan la misma cantidad de dígitos que
se espera tenga la salida.
● Se truncan los dígitos “sobrantes” más significativos de la salida.
Ejemplo:
● Entrada: 7490312
● Proceso: 74 + 90 + 31 + 2 = 197, se trunca a 97
● Salida: 97
Métodos de Hashing
Aritmética Modular:
● Se utiliza la función MOD para dividir la entrada dentro del rango del
índice (tamaño del array o lista).
● Se mejora la efectividad utilizando número primos cercanos al rango.
Ejemplo:
● Entrada: 7490312
● Proceso:
o Tamaño 100, el menor primo es 97.
o 7490312 MOD 97 = 69
● Salida: 69
Métodos de Hashing
Mitad del cuadrado:
● Se calcula el cuadrado de la clave y luego se seleccionan números de la
parte intermedia.
● Siempre se deben seleccionar las mismas posiciones dentro del cuadrado.
Ejemplo:
● Entrada: 7490312
● Proceso:
o 7490312^2 = 56,104,773,857,344
o Se toman las posiciones 6 y 7.
● Salida: 77
Asistencia
● Toma de asistencia.
Gracias por su atención

More Related Content

What's hot

Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoLutzo Guzmán
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 

What's hot (20)

Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Listas
ListasListas
Listas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Recursividad
RecursividadRecursividad
Recursividad
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 

Similar to Búsqueda secuencial y binaria

Manejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, BeneficiosManejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, Beneficiosejosue23
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctoresmishuhot
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJohnfornerod
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectoressirekarol
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modularvvillegass
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++compumet sac
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaOsirysRock
 
5. algoritmos de búsqueda
5. algoritmos de búsqueda5. algoritmos de búsqueda
5. algoritmos de búsquedaFernando Solis
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de BúsquedaPedro Avaria
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busquedaGonzalo Retamal
 
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)Rubi Veronica Chimal Cuxin
 

Similar to Búsqueda secuencial y binaria (20)

Manejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, BeneficiosManejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, Beneficios
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
5. algoritmos de búsqueda
5. algoritmos de búsqueda5. algoritmos de búsqueda
5. algoritmos de búsqueda
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 
Tema5
Tema5Tema5
Tema5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
1_Metodos.doc
1_Metodos.doc1_Metodos.doc
1_Metodos.doc
 
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
 

More from Alvaro Enrique Ruano

Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Alvaro Enrique Ruano
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmosAlvaro Enrique Ruano
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y ShellAlvaro Enrique Ruano
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoAlvaro Enrique Ruano
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Alvaro Enrique Ruano
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareAlvaro Enrique Ruano
 

More from Alvaro Enrique Ruano (17)

Resumen caso Enron
Resumen caso EnronResumen caso Enron
Resumen caso Enron
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Ordenamientos rápido y mezcla
Ordenamientos rápido y mezclaOrdenamientos rápido y mezcla
Ordenamientos rápido y mezcla
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
 

Búsqueda secuencial y binaria

  • 2. Ejercicio Ordenamientos Para el siguiente listado de arreglos, aplicar todos los métodos de ordenamiento (ascendente) vistos en clase. Se deberán presentar todas las tablas intermedias realizadas durante el proceso así como el listado de intercambios realizados: • 45,65,23,46,78,11,23,21,20,0 • 7,6,5,4,3,2,1
  • 3. Contenido ● Búsqueda ● Métodos de Búsqueda o Secuencial o Binaria o Hashing
  • 4. Búsqueda ● La búsqueda es una de las aplicaciones más importantes de las computadoras. ● También es conocida como recuperación o searching. ● Es una operación para encontrar la posición de un elemento entre un conjunto de elementos dados: lista, tabla o archivo.
  • 5. Búsqueda ● Las búsquedas pueden clasificarse según el medio de almacenamiento donde se encuentran los registros: o Búsqueda interna: Es aquella que se realiza completamente en la memoria RAM o Búsqueda externa: Es aquella que se realiza dentro de archivos en almacenamiento secundario (disco duro, memoria flash, cinta, etc.).
  • 6. Búsqueda ● Existen diversos algoritmos de búsqueda, pero la elección dependerá de la forma en que se encuentran almacenados los datos. ● Por definición, se considera a un algoritmo como “algoritmo de búsqueda” si cumple las siguientes dos condiciones: o Puede determinar si X pertenece al conjunto e indicar su posición o Puede determinar si X no pertenece al conjunto
  • 7. Búsqueda ● Existen diversos algoritmos de búsqueda, pero la elección dependerá de la forma en que se encuentran almacenados los datos. o Secuencial o Binario o Por transformación de claves hash. ● Por definición, se considera a un algoritmo como “algoritmo de búsqueda” si cumple las siguientes dos condiciones: o Puede determinar si X pertenece al conjunto e indicar su posición o Puede determinar si X no pertenece al conjunto
  • 8. Búsqueda Secuencial ● Es la forma más sencilla de búsqueda. ● Se dice que es una exploración secuencial del listado, de ahí viene el nombre del método. ● Consiste en comparar cada elemento del listado contra el valor deseado. ● Tiene dos condiciones de finalización o Cuando se encuentra el valor o Cuando se termina de leer por completo el listado
  • 9. Búsqueda Secuencial ● Ventajas o Es sencillo de implementar ya que únicamente se utilizan estructuras repetitivas. o No requiere que el listado esté ordenado o en algún estado especial. ● Desventajas o El poco eficiente ya que se debe recorrer por completo el arreglo. o Tiempo excesivo de procesamiento en vectores grandes. o Se requerirán (N+1)/2 comparaciones en promedio. o En el peor de lo casos se requieren N comparaciones.
  • 11. Mejoras al Algoritmo 1 ● El algoritmo 1 realiza dos comparaciones en cada iteración: o Una para comparar si se encuentra el elemento t o La otra para evaluar si ya se llegó al final del vector ● Se puede mejorar el rendimiento disminuyendo a una comparación por iteración al agregar un “valor centinela” que permita descubrir si ya se terminó de recorrer el vector. ● Se utiliza el valor buscado como valor centinela y se coloca al final del arreglo (en una posición adicional) para forzar a que el algoritmo siempre tenga éxito encontrando el valor buscado.
  • 13. Búsqueda Binaria ● Es eficiente cuando tratamos con conjuntos grandes de datos. ● Requiere que los datos estén ordenados. ● Se basa en la división sucesiva del espacio ocupado por el arreglo en sucesivas mitades. ● Se basa en la estrategia de “divide y vencerás”
  • 14. Búsqueda Binaria o Se examina el elemento central de la lista. o Si es el elemento buscado, se termina la búsqueda. o Si no es el elemento buscado, se determina si el elemento buscado es mayor o menor al central. Esto nos indicará si este elemento se encuentra en la primera mitad de la lista o en la segunda mitad. o Se elige la nueva mitad a evaluar y se repite este proceso utilizando el elemento central de cada sublista.
  • 18. Búsqueda Binaria ● Cantidad de comparaciones en el peor caso: ● Cantidad de comparaciones en el caso promedio
  • 20. Hashing ● También llamado búsqueda mediante transformación de claves. ● No se requiere que los datos estén ordenados. ● Consiste en convertir una clave dada (valor de búsqueda) en una dirección dentro del listado donde se almacenan los valores (al momento del almacenamiento). ● Esta misma conversión se realizará al momento de realizar la búsqueda, obteniendo de forma inmediata la posición dentro del listado.
  • 21. Hashing ● Existen casos donde es sencillo encontrar una función de conversión. o Por ejemplo una lista de 100 empleados, donde el código de empleado es un número del 1 al 100, la correspondencia es directa. ● Existen otros casos donde no es posible establecer una relación como el inciso anterior. o Por ejemplo, si necesitamos que el campo de búsqueda sea el número de documento de identificación (varios millones) para una muestra de 100 empleados.
  • 23. Hashing ● La conversión entre las claves y la posición en el listado es realizada por una función denominada “función de conversión” o “función hash”. ● Se dice que el objetivo de la función H(k) es convertir una clave k en una dirección d. ● En el ejemplo anterior, la función H(k) convierte valores en un rango de varios millones (número de documento de identificación) a un rango de 100 valores (tamaño del arreglo o lista).
  • 24. Colisiones ● Existen casos donde para dos valores k de entrada, se producirá la misma salida d, estos casos se llaman “Colisiones”. ● La colisión se soluciona definiendo la forma en que se se encuentra un valor alternativo (d1, d2, …, dn) para almacenar el registro en esta nueva posición. ● El éxito de esta técnica está en dos factores: o La elección de la función H o El procedimiento para manejo de colisiones
  • 26. Métodos de Hashing Truncamiento: ● Ignora una parte de la clave y se utiliza la parte restante directamente como índice. ● Es un método muy rápido pero falla para distribuir las claves de forma uniforme. Ejemplo: ● Entrada: 7490312 ● Proceso: Se trunca 90312 ● Salida: 74
  • 27. Métodos de Hashing Plegamiento: ● Se divide la clave en diferentes partes. ● Las distintas partes se combinan de un modo conveniente, a menudo suma o multiplicación ● Es recomendable que las partes tengan la misma cantidad de dígitos que se espera tenga la salida. ● Se truncan los dígitos “sobrantes” más significativos de la salida. Ejemplo: ● Entrada: 7490312 ● Proceso: 74 + 90 + 31 + 2 = 197, se trunca a 97 ● Salida: 97
  • 28. Métodos de Hashing Aritmética Modular: ● Se utiliza la función MOD para dividir la entrada dentro del rango del índice (tamaño del array o lista). ● Se mejora la efectividad utilizando número primos cercanos al rango. Ejemplo: ● Entrada: 7490312 ● Proceso: o Tamaño 100, el menor primo es 97. o 7490312 MOD 97 = 69 ● Salida: 69
  • 29. Métodos de Hashing Mitad del cuadrado: ● Se calcula el cuadrado de la clave y luego se seleccionan números de la parte intermedia. ● Siempre se deben seleccionar las mismas posiciones dentro del cuadrado. Ejemplo: ● Entrada: 7490312 ● Proceso: o 7490312^2 = 56,104,773,857,344 o Se toman las posiciones 6 y 7. ● Salida: 77
  • 30. Asistencia ● Toma de asistencia.
  • 31. Gracias por su atención