Galería de mapas mentales Marco del curso de estructura de datos.
Revisé el mapa creado por la estructura de datos. Espero que pueda ayudar a todos ~ Resume en detalle el contenido del conocimiento de los puntos de prueba de búsqueda, gráfico, árbol, clasificación y tabla lineal de la estructura de datos.
Editado a las 2021-12-10 20:35:35,Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Revisión de la estructura de datos
mesa lineal
Almacenamiento lineal
unir
Preste atención al juicio final de si las dos mesas están vacías o no.
Encontrar
complejidad del tiempo:
insertar
complejidad del tiempo:
borrar
complejidad del tiempo:
Aplicación de tablas lineales: inversión in situ
Intercambie continuamente los elementos frontal y final de una lista lineal
almacenamiento en cadena
Inserción en lista enlazada individualmente
Presta atención al orden del código.
Eliminación de lista enlazada individualmente
Presta atención al orden del código.
Inversión in situ de lista enlazada individualmente
Constantemente eliminando e insertando cabezas.
Lista enlazada circular única
lista doblemente enlazada
pilas y colas
pila
La pila es una lista lineal especial (primero en entrar, último en salir, último en entrar, primero en salir)
No se puede sacar una pila vacía y no se puede ingresar a una pila llena.
La pila se implementa con una tabla lineal. El puntero superior (en realidad un número) de la pila es -1, que significa una pila vacía, y top=MAX-1, que significa una pila llena.
Cuando la pila está llena, se convierte en un desbordamiento; cuando la pila está vacía, se convierte en un desbordamiento.
cola
La cola solo se puede eliminar al principio de la cola (frente) y solo se puede insertar al final de la cola (posterior).
Frente inicial=trasero=-1
Falso desbordamiento de cola
La solución es construir una cola circular (frente=(frente 1)%MAX), trasera=(trasera 1)%MAX
Juicio de colas llenas y vacías: delantero = trasero
Solución 1: establezca una marca para determinar si la última operación se envió o se sacó de la pila
Solución 2: establezca un número para registrar la cantidad de elementos en la cola
Solución 3: sacrificar un espacio de almacenamiento (trasero 1)%MAX==frente
Estructura de almacenamiento de la cadena de colas
formación
Varias matrices especiales
matriz triangular superior e inferior
matriz simétrica
matriz tridiagonal
matriz dispersa
almacenamiento de mesa triple
almacenamiento en cadena
Árbol
Definición de árbol binario
Un árbol binario es un árbol vacío o un nodo raíz más dos árboles binarios separados que se convierten en el subárbol izquierdo y el subárbol derecho respectivamente.
árbol binario especial
árbol binario completo
árbol binario completo
Propiedades de los árboles binarios
El i-ésimo nivel del árbol binario tiene como máximo
Un árbol binario de nivel k tiene como máximo
Para cualquier árbol binario, suponiendo que el número de nodos hoja es n0 y el número de nodos secundarios es n2, entonces n0=n2 1
Numere el árbol binario en orden jerárquico. El nodo secundario izquierdo del nodo numerado i es 2i y el nodo secundario derecho es 2i 1.
Almacenamiento secuencial de árboles binarios.
Almacene sólo árboles binarios completos, dejando libre el espacio 0, consulte la Propiedad 4
Almacenamiento vinculado de árboles binarios: lista vinculada binaria
Lista enlazada de tres vías (cada nodo almacena su nodo principal)
Recorrido de árbol binario
Recorrido de preorden, recorrido de orden, recorrido de postorden
recorrido de orden de nivel
Al utilizar una cola, cada vez que se visita un nodo, sus hijos izquierdo y derecho se ponen en cola.
recorrido no recursivo
Aplicaciones de los árboles binarios
Encuentra la profundidad de un árbol binario
Encuentra el número de hojas de un árbol binario.
árboles y bosques
Representación del hermano de los niños del árbol.
árbol binario especial
árbol binario de pistas
Regulación: si hay un subárbol izquierdo, entonces lchild apunta a su subárbol izquierdo; de lo contrario, apunta a su predecesor. Si hay un subárbol derecho, entonces rchild apunta a su subárbol derecho; de lo contrario, apunta a su sucesor.
árbol de clasificación binaria
Un árbol de clasificación binaria es un árbol vacío o tiene las siguientes propiedades: si su subárbol izquierdo no está vacío, entonces todos los valores de los nodos en el subárbol izquierdo son menores que el valor del nodo raíz. Entonces el subárbol derecho Los valores de todos los nodos en el subárbol son mayores que el valor del nodo raíz. Los subárboles izquierdo y derecho son árboles binarios ordenados.
Encontrar
La búsqueda BST es un proceso de comparación y ramificación constantes.
estructura
La construcción de BST es un proceso de búsqueda y adición continua de nodos hoja.
borrar
Eliminar nodos de hoja, eliminarlos directamente
Elimine el nodo con grado 1 y reemplácelo con su nodo secundario no vacío
Elimine el nodo con grado 2 y reemplácelo con su predecesor.
Buscar análisis de rendimiento
El concepto de longitud media de búsqueda.
árbol binario equilibrado
Un árbol binario equilibrado es, ante todo, un árbol binario ordenado. Sus subárboles izquierdo y derecho son árboles binarios equilibrados y la diferencia de profundidad entre los subárboles izquierdo y derecho no supera 1.
Los árboles binarios equilibrados se construyen utilizando técnicas de rotación equilibrada.
árbol binario óptimo
El árbol con la longitud de camino ponderada más corta.
Algoritmo codicioso para construir el árbol de Huffman
Cuatro pasos para transmitir mensajes
1. Cuente la frecuencia de aparición de personajes.
2. Construir el árbol de Huffman
3. Formule la tabla de códigos de Huffman
4. Traducir caracteres
Montón
Un árbol apilado es un árbol binario completo. El valor del nodo padre de un montón superior grande es mayor que su nodo hijo, y el valor del nodo padre de un montón superior pequeño es menor que su nodo hijo.
peinando la pila
clasificación de montón
Problema TopK de elementos masivos.
imagen
concepto de diagrama
gráfico dirigido
Gráfico completo dirigido (un gráfico dirigido con n (n-1) aristas)
Los enlaces se llaman arcos.
Gráfico no dirigido
Gráfico completo no dirigido (el número de aristas es la mitad que el del gráfico completo dirigido)
los enlaces se convierten en bordes
bien
neto
grado de vértice
El concepto de gráfico conectado.
componentes conectados
El subgrafo conectado máximo en un gráfico no dirigido se llama componente conectado
Un subgrafo máximo fuertemente conexo en un gráfico dirigido se llama componente fuertemente conexo
subtrama
Un gráfico cuyo conjunto de vértices es un subconjunto del gráfico principal y cuyo conjunto de aristas también es un subconjunto del gráfico principal se convierte en un subgrafo del gráfico principal.
árbol de expansión
Para un gráfico con n vértices, su árbol de expansión es un subgrafo conectado con n vértices y n-1 aristas.
adyacencias de vértices en un gráfico
Si hay una arista que conecta dos vértices en un gráfico no dirigido, entonces los dos vértices son adyacentes entre sí.
Si hay un arco en el gráfico dirigido, el receptor está adyacente al remitente
Almacenamiento de gráficos
matriz de adyacencia
lista de adyacencia
Es fácil encontrar el grado de salida, pero es difícil encontrar el grado de entrada.
Es fácil encontrar el grado de entrada de la lista de adyacencia inversa, pero es difícil encontrar el grado.
lista cruzada
Es más fácil encontrar el grado de entrada y de salida.
Recorrido de gráficos
primera búsqueda en profundidad
amplitud primera búsqueda
algoritmo gráfico
Encuentre el árbol de expansión mínimo para un gráfico no dirigido
algoritmo de primi
Principalmente conectado, seleccione el borde conectado con el peso más pequeño cada vez
Complejidad algorítmica
algoritmo de Kruskal
Centrándose en el costo mínimo, seleccione el borde con el peso más pequeño cada vez para ver si se puede agregar al árbol de expansión mínimo.
Complejidad algorítmica
Comprobación de anillos: clasificación topológica
Eliminar continuamente vértices con grado 0
La clasificación topológica no puede continuar, lo que indica que el gráfico contiene ciclos.
Red de gráfico acíclico dirigido (AOV): algoritmo de ruta crítica
Método de etiquetado, la suma máxima en la dirección hacia adelante, la diferencia mínima en la dirección inversa, el nodo con direcciones iguales hacia adelante y hacia atrás es el nodo clave
algoritmo de ruta más corta
Algoritmo de la unidad Dijikstra
programación dinámica
Algoritmo Floyd de todas las fuentes
Multiplicación de matrices
Encontrar
Buscar categorías
búsqueda estática
búsqueda dinámica
Palabras clave
Si una palabra clave puede representar un elemento único, se denomina palabra clave principal.
Si solo puede representar unos pocos elementos, se denomina palabra clave secundaria.
Buscar en tabla lineal
búsqueda secuencial
Comparación promedio requerida al verificar aciertos
Si la verificación falla, es necesario compararla n veces.
media búsqueda
Cuando la búsqueda falla, los valores altos y bajos se entrelazan.
Se registra el número máximo de comprobaciones exitosas y el número mínimo es 1.
Si la verificación falla, es necesario comparar los tiempos de registro.
Búsqueda de índice
El proceso de búsqueda se divide en dos partes: búsqueda secuencial entre bloques y búsqueda secuencial dentro de bloques.
Suponiendo que n es la longitud de la tabla y que cada bloque contiene s datos, la longitud de búsqueda promedio es
Búsqueda en tabla hash (búsqueda hash)
Método de construcción de la función hash
método de función hash directa
Tome la palabra clave en sí o una función lineal de la palabra clave como dirección hash
analítica digital
H(clave)=s dígitos distribuidos uniformemente en la clave
Método cuadrado-medio
H(clave)=los dígitos del medio de la clave2
método de plegado
Divida la palabra clave en varias partes y utilice la suma de las distintas partes como dirección hash.
método dividir y dejar resto
Tome un número primo determinado que no sea mayor que la longitud y elimine el resto del número primo como dirección hash.
método de números aleatorios
H(clave)=aleatorio(clave)
métodos de resolución de conflictos
ley de direcciones abiertas
sondeo al cuadrado y hash
Sondeo lineal y luego hash
Sondeo aleatorio y luego hash
refrito
Hash nuevamente con una función hash diferente
método de dirección de cadena
Almacene todos los valores con la misma dirección hash en una lista vinculada
método de desbordamiento del área pública
Crear una tabla de desbordamiento
Longitud promedio de búsqueda de tablas hash
El ASL de una tabla hash es una función del factor de relleno en lugar de una función de n
clasificar
Insertar clase
clasificación por inserción directa
clasificación de media inserción
Media búsqueda en secuencia ordenada
clasificación de colinas
La complejidad del tiempo está entre
Seleccionar clase
Orden de selección simple
Seleccione el más pequeño de los datos desordenados y agréguelo a la secuencia ordenada cada vez
clasificación de montón
Utilice un montón superior grande, elimine continuamente los elementos superiores y fíltrelos
clase de intercambio
Ordenamiento de burbuja
Ordenación rápida
División rápida de una sola vez: busque un registro como pivote, mueva todo lo que sea más pequeño al frente y mueva todo lo que sea más grande hacia atrás
Quicksort es un programa recursivo
Mejora de la clasificación rápida, seleccione el del medio entre el primer elemento, el último elemento y el elemento del medio como pivote para evitar el deterioro del rendimiento.
La complejidad del espacio se refleja principalmente en la recursividad.
Fusionar clase
Clasificación por fusión bidireccional
Comparación de estabilidad
Compare la complejidad del tiempo y la complejidad del espacio con n al cuadrado (la clasificación por selección simple es un caso especial)
Clasificación inestable
Clasificación en montón, clasificación rápida, clasificación Hill, clasificación por selección simple
clasificación estable
Clasificación por burbujas, clasificación por inserción directa, clasificación por media inserción, clasificación por combinación bidireccional