[Revisión de la estructura de datos] Tabla hash

Todas las imágenes provienen del PPT de la Fundación de Algoritmos y Estructura de Datos (Universidad de Qingdao-Wang Zhuo) . Por cierto, Amway, la conferencia del maestro es muy buena, ¡y se recomienda el muro!

Tabla de picadillo

1. Concepto

1. Definición de tabla hash

La tabla hash es una estructura de datos a la que se accede directamente en función del valor del código clave . En otras palabras, accede al registro asignando el valor del código clave a una ubicación en la tabla para acelerar la búsqueda. Esta función de mapeo se denomina función hash y la matriz que almacena registros se denomina tabla hash .

Función hash: H (tecla) = Addr.

Ejemplo:
Inserte la descripción de la imagen aquí
Como arriba, dada la función hash H (clave) = clave, si la clave dada = 9, la dirección calculada por la función hash es 9, es decir, 9 debería existir en la novena posición de la tabla hash.

2. Conceptos relacionados de tablas hash

  • Conflicto: diferentes códigos de clave se asignan a la misma dirección hash. Es decir, key1! = Key2, pero H (key1) == H (key2).
  • Sinónimo: palabras clave con el mismo valor de función hash.

En segundo lugar, el método de construcción de la función hash.

Funciones hash de uso común:
Inserte la descripción de la imagen aquí

1. Método de direccionamiento directo

Inserte la descripción de la imagen aquí

2. Además del método del resto

Inserte la descripción de la imagen aquí
p generalmente toma la longitud de la tabla hash.

3. Otro

  • Análisis numérico: analiza un conjunto de datos, como la fecha de nacimiento de un grupo de empleados. En este momento, encontramos que los primeros dígitos de la fecha de nacimiento son aproximadamente los mismos. En este caso, la probabilidad de conflicto será muy alto, pero encontramos Los últimos dígitos del año, mes y día indican el mes y la fecha específica.Si los siguientes dígitos se utilizan para formar una dirección hash, la probabilidad de conflicto se reducirá significativamente. Por lo tanto, el método de análisis digital consiste en descubrir las leyes de los números y utilizar estos datos tanto como sea posible para construir una dirección hash con una menor probabilidad de conflicto.
  • Cuadrado del método del medio: tome los dígitos del medio después de que la palabra clave esté al cuadrado como la dirección hash.
  • Método de plegado: divida la palabra clave en varias partes con el mismo número de bits, y la última parte del número de bits puede ser diferente, y luego tome la superposición y (elimine el acarreo) de estas partes como la dirección hash.
  • Método de número aleatorio: elija una función aleatoria, tome la palabra clave como semilla de la función aleatoria y genere un valor aleatorio como dirección hash. Por lo general, se usa cuando la longitud de la palabra clave es diferente.

3. Métodos de manejo de conflictos

Inserte la descripción de la imagen aquí

1. Método de dirección abierta (método de dirección abierta)

La idea básica: cuando hay un conflicto, busque la siguiente dirección hash vacía . Siempre que la tabla hash sea lo suficientemente grande, la dirección hash vacía siempre se puede encontrar y los elementos de datos se almacenan en ella.
Inserte la descripción de la imagen aquí

2. Método de dirección de cadena (método de cremallera)

La idea básica: los registros de la misma dirección hash están encadenados en una lista enlazada individualmente, m direcciones hash son listas enlazadas individualmente, y luego se usa una matriz para almacenar los punteros principales de las listas enlazadas individualmente para formar una estructura dinámica .

Ejemplo:
Inserte la descripción de la imagen aquí
Pasos para crear una tabla hash en el método de dirección en cadena:
Inserte la descripción de la imagen aquí

Cuarto, la búsqueda de la tabla hash.

Inserte la descripción de la imagen aquí
Nota: ASL es la abreviatura de la longitud de búsqueda promedio cuando el algoritmo de búsqueda tiene éxito. Es el valor esperado del número de palabras clave que deben compararse con el valor dado para determinar la posición del registro en la tabla de búsqueda.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43424037/article/details/113727318
Recomendado
Clasificación