Resumen de la estructura de datos y el algoritmo 1

1 Estructura de datos común

1.1 Estructuras y técnicas de datos comunes

  • Matriz, cadena
  • Lista enlazada
  • Apilar
  • cola
  • Deque
  • árbol

(1) Ventajas y desventajas de las matrices y las capas de caracteres

Ventajas: construir un arreglo es muy simple; nos permite consultar un elemento basado en el subíndice del arreglo en tiempo O (1)

Desventajas: Se debe asignar un espacio continuo durante la construcción; toda la matriz debe recorrerse al consultar si existe un elemento, lo que toma O (n) tiempo; al eliminar y agregar un elemento, también toma O (n) tiempo

(2) Lista vinculada

Lista enlazada individualmente: cada elemento de la lista enlazada es en realidad un objeto separado, y todos los objetos están enlazados por el campo de referencia en cada elemento.
Inserte la descripción de la imagen aquí
Lista enlazada doble: a diferencia de las listas enlazadas individualmente, cada nodo de la lista enlazada doble contiene dos campos de referencia
Inserte la descripción de la imagen aquí

Ventajas: asignar espacio de memoria de manera flexible; puede eliminar o agregar elementos en tiempo O (1).
Desventajas: los elementos de consulta requieren tiempo O (n) para
resolver problemas : use punteros rápidos y lentos (a veces se requieren tres punteros); construya un enlace falso encabezado de lista. Por ejemplo: dos listas enlazadas ordenadas están integradas y ordenadas; los números pares e impares de las listas enlazadas se separan en el orden original para generar una lista enlazada con números impares en la primera mitad y números pares en la segunda mitad.
(3) pila
Características: último en entrar , primero en salir
algoritmo idea básica: puede ser uno usado se implementa la lista de enlace simple; sólo la última operación es que se trate; después de procesar la última operación, la operación anterior se puede encontrar en O (1) tiempo
( 4)
Características de la cola : Primero en entrar, primero en salir
Escenarios comunes: Amplitud primero en la búsqueda
(5) Cola de dos extremos
Realización básica: Puede usar una lista de doble enlace; los extremos principales y finales de la cola pueden ver, agregar y eliminar datos . en el tiempo o (1)
escenarios comunes: Realizar una ventana que cambia dinámicamente o longitud continua de intervalos
(6) del árbol de Commonness de
árbol: estructura intuitiva; comprobar el algoritmo recursivo a través de problema árbol para . dominar el dominio de la recursión
las formas de árboles a menudo se prueba en las entrevistas son:
árbol binario ordinario, árbol binario
equilibrado,
árbol
binario completo, árbol de búsqueda binario, árbol
cuádruple,
árbol múltiple,
especial El árbol: árbol rojo-negro, árbol de búsqueda binario autoequilibrado
Recorrido: recorrido de preorden; medio- orden transversal; recorrido posterior a la orden

2 Estructura de datos de alto nivel

Cola de prioridad
Figura
prefijo
línea de árbol segmento de árbol
matriz de árbol
(1)
la diferencia entre la cola de prioridad y la cola normal: asegúrese de que el elemento eliminado cada vez sea la prioridad más alta en la cola; el nivel de prioridad se puede personalizar.
Escenarios más utilizados: desde datos desordenados Filtrar datos de acuerdo con un cierto orden (o prioridad)
Esencia: La estructura de un montón binario, usando una estructura de matriz para lograr un árbol binario completo
Inserte la descripción de la imagen aquí
Características:
El primer elemento en la matriz de matriz [0] tiene la prioridad más alta.
Dado un subíndice i, entonces para la matriz de elementos [i], el índice del elemento correspondiente al nodo padre es (i-1) / 2, el índice del elemento correspondiente al nodo hijo izquierdo es 2 i + 1, y el elemento correspondiente al nodo secundario derecho El subíndice es 2 1 + 2.
La prioridad de cada elemento en la matriz debe ser mayor que la de los nodos secundarios en ambos lados. La
operación básica tiene los siguientes dos:
Filtrar hacia arriba Filtrar hacia
abajo
Otro momento más importante complejidad: la inicialización de la cola de prioridad
(2) Gráfico Los
puntos de conocimiento más básicos son los siguientes:
orden,
árbol de grados , bosque, anillo
, gráfico dirigido, gráfico no dirigido, gráfico totalmente dirigido, gráfico totalmente no dirigido,
gráfico conectado,
gráfico de componente conectado expresión de almacenamiento: matriz de adyacencia, los
algoritmos de gráfico de lista enlazada de adyacencia son diversos:
recorrido de gráfico: primero profundidad, primero ancho,
detección de anillo: gráfico dirigido, gráfico no dirigido,
orden topológico,
algoritmo de ruta más corta, algoritmo
relacionado con gráfico conectado
Coloración de gráficos y problema del viajante
. Puntos de conocimiento que deben dominarse:
Almacenamiento y expresión de gráficos: matriz de adyacencia, lista enlazada de adyacencia Recorrido de gráfico: detección de gráfico bipartito
primero en profundidad, primero en anchura
, detección de árbol, detección de anillo: gráficos dirigidos, gráficos no dirigidos ,
ordenación topológica,
algoritmo de búsqueda conjunta,
ruta más corta
(3) árbol de prefijos,
también llamado árbol de diccionario.
Esta estructura de datos se usa ampliamente en búsquedas de diccionario.
¿Qué es la búsqueda de diccionario,
por ejemplo: dada una serie de cadenas que componen un diccionario? , Se requiere encontrar todas las cadenas que comienzan con "ABC" en el diccionario
Método 1: Método de búsqueda de ganancias
Método 2: Árbol de prefijos La
operación más básica:
Método de creación : atraviesa la cadena de entrada una vez y ejecuta el carácter de cada cadena Travesía , comenzando desde el nodo raíz del árbol de prefijos, agregando cada carácter al conjunto de caracteres hijo del nodo, si el conjunto de caracteres ya contiene este carácter, omítalo. Si el carácter actual es el último de la cadena, marque isEnd del nodo actual como verdadero. La
operación más básica:
método de búsqueda : comience desde el nodo raíz del árbol de prefijos y haga coincidir los caracteres de prefijo ingresados ​​uno por uno. Si se encuentra , continuar al siguiente nivel Buscar, si no se encuentra, volver inmediatamente a
(4) árbol de segmento de línea.
Suponiendo que tenemos una matriz de matriz [0, ..., n-1] con n elementos en ella, ahora debemos hacer dos cosas para toda la matriz:
1. Actualice el valor del elemento de la matriz
2. Encuentre la suma (o promedio) de los elementos en cualquier intervalo de la matriz
Método 1: Recorra la matriz una vez, complejidad de tiempo O (n)
Método 2 : Árbol de segmento de línea, complejidad de tiempo O (logn)
Qué es un árbol de segmento de línea : una estructura que almacena datos en forma de árbol binario, cada nodo almacena la suma de un determinado segmento en la
matriz Por ejemplo: matriz [1,3,5,7,9,11]
Inserte la descripción de la imagen aquí
( 5) La matriz de árbol
también se conoce como árbol indexado binario.
Supongamos que tenemos una matriz de matriz [0, ..., n-1] con n elementos. Ahora tenemos que hacer dos cosas con frecuencia en toda la matriz:
1. Actualizar el valor de los elementos de la matriz
2. Encontrar la suma (o promedio) de los primeros k elementos de la matriz
Método 1: Árbol de segmento de línea
Complejidad de tiempo: O (logn)
Método 2: matriz de árbol
Complejidad de tiempo: O (logn)
Características básicas importantes
Uso datos para expresar más La estructura del árbol de la bifurcación es algo similar a la
cola de prioridad. La cola de prioridad usa una matriz para representar un árbol binario completo, mientras que la matriz de árbol es un árbol múltiple
. El primer elemento de la matriz de árbol es un nodo vacío .
Si el árbol de nodos [y] es árbol [x] El nodo padre de, entonces y = x- (x & (- x))

Supongo que te gusta

Origin blog.csdn.net/wqs12345612/article/details/113954588
Recomendado
Clasificación