Encuentra puntos de aprendizaje

Visión de conjunto

La búsqueda es la operación básica más utilizada en el campo del procesamiento de datos. La búsqueda se basa en la recopilación como estructura de datos, y la operación principal es la búsqueda. También puede incluir otras operaciones como inserción y eliminación. La estructura organizativa de los puntos de conocimiento de este capítulo se muestra en la siguiente figura:
Inserte la descripción de la imagen aquí

Puntos clave / dificultades / puntos

El enfoque de este capítulo es :

  1. El proceso y desempeño de la búsqueda binaria;
  2. Construcción y búsqueda de árbol de ordenamiento binario;
  3. Ajuste de árbol binario balanceado;
  4. Construcción y búsqueda de tablas hash;
  5. Rendimiento temporal y comparación de diversas tecnologías de búsqueda.

La dificultad de este capítulo es :

  1. Eliminar la operación del árbol de ordenación binaria;
  2. El método de ajuste del árbol binario balanceado.

Este capítulo se centrará en la búsqueda estática y la búsqueda dinámica, prestando atención a las condiciones aplicables de varias técnicas de búsqueda y la comparación del rendimiento de búsqueda.
Para la búsqueda estática , la tecnología de búsqueda aplicable es la búsqueda secuencial y la mitad de la búsqueda La idea de aprendizaje de esta parte es: explicar la idea básica → ejecutar ejemplos para comprender el proceso de búsqueda → describir el algoritmo → análisis de rendimiento de búsqueda → situación aplicable.
Para la búsqueda dinámica , la tecnología de búsqueda aplicable es principalmente árbol de ordenación binaria. La idea de aprendizaje de esta parte es:
primero revisar el conocimiento relevante del árbol binario, discutir las operaciones de inserción, eliminación y búsqueda del árbol de ordenación binaria respectivamente, y darse cuenta de por qué el árbol de ordenación binario puede Hacer que la inserción, el borrado y la búsqueda simultáneamente obtengan un mejor rendimiento horario. Sobre la base del análisis del rendimiento de búsqueda del árbol de ordenación binaria, se introduce el árbol binario equilibrado y se explica la rotación equilibrada mediante ejemplos específicos.
La tecnología hash es adecuada tanto para la búsqueda estática como para la búsqueda dinámica. La tecnología hash se discute en torno a dos temas, uno es la función hash y el otro es el método para tratar los conflictos. Para la función hash, es necesario aclarar que el diseño de la función hash tiene gran flexibilidad, y es necesario aprender a diseñar una función hash adecuada según las características del conjunto de búsqueda y el registro. Para el método de manejo de conflictos, es necesario aclarar que existen esencialmente dos métodos de almacenamiento básicos: el uso de almacenamiento secuencial y almacenamiento vinculado. Finalmente, muestra que el rendimiento en el tiempo de la búsqueda hash es una constante O (1) después de seleccionar un factor de empaquetamiento adecuado.

Puntos de conocimiento

  1. La búsqueda toma la colección como estructura de datos y la búsqueda es la operación principal. La búsqueda que no involucra operaciones de inserción y eliminación se denomina búsqueda estática: la búsqueda que involucra operaciones de inserción y eliminación se denomina búsqueda dinámica.
  2. El rendimiento temporal del algoritmo de búsqueda generalmente se mide por la duración promedio de la búsqueda.
  3. La duración de búsqueda promedio de la búsqueda secuencial es O (n). Condiciones aplicables: no es necesario ordenar los registros por código clave; se aplica al almacenamiento secuencial y al almacenamiento en cadena.
  4. La longitud de búsqueda promedio de la búsqueda binaria es O (log ⁡ 2 n) O (\ log_2n)O ( lo g2n ) , Condiciones aplicables: los registros se ordenan según los códigos clave, se almacenan en orden.
  5. El árbol de decisión de búsqueda binaria es un árbol binario que describe el proceso de búsqueda binaria, y su profundidad es ⌊ log ⁡ 2 n ⌋ + 1 \ lfloor \ log_2n \ rfloor + 1lo g2n +1 . El proceso de búsqueda de cualquier registro es encontrar la ruta desde el nodo raíz al nodo de registro en el árbol de decisión por la mitad, y el número de comparaciones con el valor dado es igual al número de niveles del nodo de registro en el árbol de decisión.
  6. En el árbol de ordenación binaria, el rendimiento temporal de las operaciones de búsqueda, inserción y eliminación de nodos está en O (log ⁡ 2 n) O (\ log_2n)O ( lo g2Entre n ) y O (n),O (log ⁡ 2 n) O (\ log_2n) en promedioO ( lo g2n )
  7. Para realizar una operación de eliminación en un árbol de clasificación binaria, se deben considerar tres casos: el nodo eliminado es un nodo hoja; el nodo eliminado tiene solo un subárbol; el nodo eliminado tiene un subárbol izquierdo y un subárbol derecho (de hecho Hay circunstancias especiales a considerar aquí).
  8. El proceso de encontrar el nodo cuyo código clave es igual al valor dado en el árbol de ordenamiento binario toma una ruta desde el nodo raíz al nodo, y el nodo cuyo número de comparaciones con el valor dado es igual al valor dado está en dos El número de niveles en el árbol de clasificación de la bifurcación, el rendimiento de la búsqueda es O (log ⁡ 2 n) O (\ log_2n)O ( lo g2n ) y O (n). Cuanto más equilibrado es el árbol de ordenación binaria, más cercana es su eficiencia de búsqueda aO (log ⁡ 2 n) O (\ log_2n)O ( lo g2n ) ; Cuanto más desequilibrado esté el árbol de ordenación binaria, más cercana será su eficiencia de búsqueda a O (n).
  9. La idea básica de un árbol binario equilibrado es: en el proceso de construcción de un árbol de clasificación binaria, cada vez que se inserta un nodo, primero verifique si el equilibrio del árbol de clasificación binario está dañado por la inserción y, de ser así, encuentre el desequilibrio más pequeño entre ellos. El subárbol, con la premisa de mantener las características del árbol de ordenamiento binario, ajusta la relación de enlace entre los nodos en el subárbol desequilibrado mínimo y realiza la rotación correspondiente para convertirlo en un nuevo subárbol equilibrado.
  10. Hay cuatro tipos de ajustes de equilibrio para un árbol binario balanceado: tipo LL, tipo RR, tipo LR y tipo RL, entre ellos, LL y RR son simétricos y LR y RL son simétricos. Siga el "Principio del polo polar" y el "Principio de prioridad de rotación" en el ajuste de la balanza. El llamado principio del polo es utilizar el nodo raíz como punto de apoyo (hombro) y mover el nodo raíz en la dirección del nodo recién insertado en el árbol de dos órdenes (moviendo el hombro hacia la dirección de hundimiento); el llamado principio de prioridad de rotación es En el proceso de rotación, ocurren conflictos, luego la relación de rotación tiene prioridad.
  11. Los dos problemas principales de la tecnología hash son: el diseño de la función hash, el método de manejo de conflictos.
  12. Los principios que se deben seguir al diseñar una función hash son: cálculo simple; distribución uniforme de los valores de la función (direcciones hash). Las funciones hash comunes incluyen direccionamiento directo, dividir y dejar residuos, análisis digital, cuadrados y métodos de plegado.
  13. Los métodos habituales para tratar los conflictos son el método de direccionamiento abierto y el método de cremallera. La tabla hash obtenida al tratar los conflictos con el método de direccionamiento abierto se denomina tabla hash cerrada. En el método de direccionamiento abierto, se usa comúnmente un método de detección lineal para encontrar una dirección hash vacía, y la acumulación ocurrirá en este momento. La tabla hash construida por el método de cremallera para hacer frente a los conflictos se denomina tabla hash abierta. El método de cremallera almacena todos los registros cuyos códigos clave son sinónimos en una subtabla de sinónimos, por lo que no hay acumulación.
  14. La longitud de búsqueda promedio también se usa para medir la eficiencia de la búsqueda en la tabla hash. En el proceso de búsqueda, el número de comparaciones de códigos clave depende de la probabilidad de conflicto, y la probabilidad de conflicto tiene los siguientes tres factores: si la función hash es uniforme; el método de manejo de conflictos; el factor de llenado de la tabla hash.
  15. El factor de llenado de la tabla hash indica qué tan llena está la tabla hash. La longitud de búsqueda promedio de la tabla hash es una función del factor de llenado. Se puede seleccionar un factor de llenado apropiado para limitar la longitud de búsqueda promedio dentro de un rango, y el rendimiento en el tiempo de la búsqueda hash es O (1).

Ejercicio

Descripción general La
estructura de búsqueda es una estructura de datos orientada a la búsqueda y, por lo general, no implica otras operaciones como inserción y eliminación. (×)
La tecnología de búsqueda de tabla lineal y tabla hash es adecuada para búsquedas estáticas. (√) La
longitud de búsqueda promedio es el número de comparaciones de códigos clave realizadas por el algoritmo de búsqueda. (×) Al
evaluar la eficiencia del algoritmo de búsqueda, a veces no se puede considerar el número de comparaciones de códigos clave en el caso de un error de búsqueda. (√)

Búsqueda secuencial La
configuración de centinelas puede mejorar el rendimiento temporal de la búsqueda secuencial en órdenes de magnitud. (×)
La eficiencia de la búsqueda secuencial es baja y, por lo general, no se utiliza la tecnología de búsqueda secuencial. (×)
Para buscar en la matriz, aproximadamente la mitad de los elementos se comparan en promedio, por lo que el rendimiento en el tiempo promedio es O (n / 2). (×)
Realice una búsqueda secuencial en la matriz y la complejidad de tiempo para una búsqueda fallida es O (n). (√)
El algoritmo de búsqueda de secuencia para configurar centinelas es el siguiente, complete la oración o expresión correspondiente en la línea horizontal.

int SeqSearch(int data[],int n,int k)
{
    
    
	int i=n;
	___①___∥设置哨兵
	while(___②___)//不用判断下标i是否越界
	i--;
	return i;
}

①data [0] = k;
②data [i]! = K

Búsqueda binaria La búsqueda
binaria solo se puede realizar en una matriz y requiere que los elementos se almacenen en orden ascendente. (×)
Suponga que los elementos de la matriz están dispuestos en orden ascendente, y la técnica de búsqueda binaria se usa para comparar el valor k que se va a verificar con el elemento medio del intervalo [bajo, alto]. Si el valor de k es menor, la declaración de modificación es (D).
A.low = mid; B.low = mid + 1; C.high = mid; D.high = mid-1; El
árbol de decisión de búsqueda binaria es un árbol binario completo. (×)
Un árbol de decisión de búsqueda binaria con 12 nodos y (B) nodos en la cuarta capa.
A.4 B.5 C.6 D.7
Un árbol de decisión de búsqueda binaria con n nodos y (C) nodos externos.
An Bn-1 C.n + 1 D. Incierto
La complejidad temporal de la búsqueda binaria es (C).
AO (1) BO (n) C. O (log ⁡ 2 n) O (\ log_2n)O ( lo g2n ) D.O (n log ⁡ 2 n) O (n \ log_2n)O ( nlo g2n )
El algoritmo recursivo de búsqueda binaria es el siguiente, complete la oración o expresión correspondiente en la línea horizontal.

int Binsearch2(int data[],___①___,int k)
{
    
    
	if(___②___)
		return0;//递归的边界条件
	else
	{
    
    
		int mid=(low+ high)/2;
		if(k< data[mid])
			return BinSearch2(data,low,mid-1,k);
		else if(k>data[mid])
			return BinSearch2(data,mid+1,high,k);
		else ___③___
	}

①int bajo, int alto
②bajo> alto
③ retorno medio;


Árbol de clasificación binaria La condición necesaria y suficiente de un árbol de clasificación binario es que el valor de cualquier nodo sea mayor que el valor de su hijo izquierdo y menor que el valor de su hijo derecho. (√)
El rendimiento temporal de la búsqueda de árbol de ordenación binaria y la búsqueda binaria es el mismo. (×)
Si los códigos clave en el árbol de clasificación binaria son diferentes entre sí, el elemento más pequeño y el elemento más grande deben ser nodos hoja. (√)
El árbol de ordenación binario puede realizar búsquedas dinámicas en grandes conjuntos de datos. (√)
Si los códigos clave en el árbol de clasificación binaria son diferentes entre sí, si el árbol de clasificación binaria se recorre en el orden medio, el resultado debe ser una secuencia ascendente. (√)
En el árbol de clasificación binaria, el nodo recién insertado debe ser un nodo hoja, por lo que la altura del árbol de clasificación binaria aumentará. (×)
En un árbol de ordenamiento binario, eliminar un nodo definitivamente involucrará al nodo padre del nodo. (√)
Construya un árbol de ordenamiento binario con el conjunto de búsqueda {25,12,18,35,30,40,50,15}, proporcione el resultado final.
Inserte la descripción de la imagen aquí

Suponga que el nodo p es el nodo de la rama de los subárboles izquierdo y derecho en los dos árboles de clasificación. El siguiente segmento del programa puede encontrar el nodo mínimo s en el subárbol derecho del nodo p. Por favor, complete la oración o expresión apropiada en la línea horizontal fórmula.

BiNode *s=nullptr;
s=p->rchild; 
while(___①___)
{
    
    
	___②___
}
return s;

①s-> lchild! = Nullptr ②s = s-> lchild;

Árboles binarios equilibrados Los árboles binarios equilibrados con el
mismo número de nodos y los árboles binarios completos tienen la misma altura. (×)
El proceso de construcción de un árbol binario balanceado consiste en construir primero un árbol de ordenamiento binario a partir del conjunto de búsqueda y luego realizar los ajustes generales. (×)
Cuando se realiza un ajuste de equilibrio en un árbol binario equilibrado, solo está involucrado el subárbol desequilibrado más pequeño y no hay otros nodos involucrados. (√)
Para el ajuste del árbol binario balanceado, el tipo de simetría del tipo LL es (A).
A. Tipo RR B. Tipo LR C. Tipo RL D. Tipo sin simetría
Durante el ajuste del árbol binario balanceado, si la relación entre los nodos entra en conflicto, la relación original se destruirá. (√)
Construya un árbol binario balanceado para el conjunto de búsqueda {25, 12, 18, 35, 40, 30} y escriba el resultado de insertar cada elemento.
Inserte la descripción de la imagen aquí

Búsqueda hash
La eficiencia de búsqueda de la tecnología hash depende principalmente de la función hash y del método de manejo de conflictos. (×)
Cuando el factor de llenado es menor que 1, no se producirá ningún conflicto al almacenar registros en la tabla hash. (×)
No es necesario comparar la tecnología hash y la dirección de almacenamiento del código clave se puede obtener directamente después del cálculo. (×)
En la aplicación de la tecnología hash, definitivamente se producirán conflictos, por lo que se requiere una pequeña cantidad de comparación para la búsqueda. (×)
En la tabla hash, no debe aparecer el mismo código de clave. (√)
El principio de diseño de la función hash es un cálculo simple, por lo que debe ser una función elemental. (√) La
acumulación puede ocurrir en la tabla hash cerrada y no debe aparecer en la tabla hash abierta. (√)
Sea 100 la longitud de la tabla hash, la función hash es el método de división y resto, y el divisor es (B).
A.100 B.97 C.91 D.89
9. Para el conjunto de búsqueda {16,24,7,9,13,20}, establezca la longitud de la tabla hash en 8 y la función hash en H (clave) = clave mod7, Dibuje una tabla hash construida por el método de detección lineal y el método de dirección en cadena para tratar los conflictos.
Método de detección lineal (tabla hash cerrada)
Inserte la descripción de la imagen aquí
método de dirección en cadena (tabla hash abierta)
Inserte la descripción de la imagen aquí

10. El algoritmo de búsqueda estática de la tabla hash cerrada es el siguiente, complete la oración o expresión apropiada en la línea horizontal.

int Search(int k)
{
    
    
	int i,j=H(k); 
	i=j; //设置比较的起始位置
	while(ht[i]!=0)
	{
    
    
	if(___①___)
		return i;//查找成功
	else ___②___ //向后探测一个位置
	}
	return -1;
}

①h [i] = k ②i = (i + 1)% m;

Referencia: "Estructura de datos (del concepto a la implementación de C ++)" Tsinghua University Press, Wang Hongmei

Supongo que te gusta

Origin blog.csdn.net/oldmao_2001/article/details/109084373
Recomendado
Clasificación