estructura de datos Resumen

  • Estructura de Datos Categoría:
  1. Estructura lógica: una estructura de recogida, estructura lineal, una estructura de árbol, estructura de patrón
  2. Estructura física: estructura de almacenamiento secuencial, el almacenamiento de una estructura de enlaces
  • algoritmo:
  1. Describir un algoritmo específico para resolver el paso de la solución problema, expresada como una secuencia finita de instrucciones en un ordenador, y cada uno representa una o más operaciones de instrucción
  2. Algoritmo tiene cinco características básicas: entrada, salida, finitos, certeza y viabilidad lata
  3. ciclo complejidad es: igual a la complejidad del bucle multiplicado por el número de ciclos de ejecución
  • orden Método para derivar una gran O:
  1. Todas las constantes de tiempo de ejecución sustituidos además por una constante 1
  2. En la función de ejecución en el, conservando sólo la más alta término de orden revisada
  3. Si existe la entrada de orden más alto y no es 1, entonces la retirada del término constante se multiplica
  • El tiempo transcurrido complejidad hora acordada Tamaño:

Complejidad de tiempo: se refiere a la demanda del tiempo de funcionamiento

la complejidad de las instalaciones: se refiere a los requisitos de espacio

Mesa lineal (array)

  • secuencia finita de cero o más elementos de datos: mesa lineal (List)
  1. estructura de almacenamiento secuencial de forma lineal, se refiere al uso de direcciones son las posiciones de memoria de forma secuencial contiguos almacenar los elementos de datos en la forma lineal. Descripción de la estructura de almacenamiento secuencial requiere tres atributos:
  2. posición del espacio de memoria de inicio: la matriz de datos, su lugar de almacenamiento es un lugar de almacenamiento del espacio de almacenamiento.
  3. mesa lineal máxima almacenada fácilmente: la longitud de la matriz MaxSize.
  4. Tabla lineal longitud actual: longitud.
  5. estructura de almacenamiento secuencial de forma lineal, cuando se almacena, lee datos, la complejidad de tiempo es O (1), y la inserta o se elimina, la complejidad de tiempo es O (n). Descripción para el número de elementos no cambia mucho, pero más datos se almacenan en la aplicación.

lista única

  1. Inserción y supresión algoritmo: consta de dos partes, primera parte es encontrar el i-ésimo elemento de recorrido; la segunda porción es de inserción y elementos de borrado.
  2. En el inserto y operaciones de borrado, y la forma lineal de la estructura de almacenamiento secuencial no es mucha ventaja, sin embargo, si una pluralidad de inserción, tal como 10 medios de almacenamiento cuando secuenciales, para mover la primera pieza de inserción (NI) elementos, cada vez es O (n), y la lista sólo necesita encontrar el i-ésimo posición del puntero en el momento, este tiempo es O (n), el siguiente movimiento del puntero es O (1). Así que para las operaciones de inserción y borrado de datos más frecuentes, las ventajas más evidentes de eficiencia lista única.
  • listas estáticas: una lista llamada una lista estática describe matriz, elemento de la matriz de datos consta de dos dominios, los datos y el siguiente puntero, el índice almacenado en el elemento de matriz sucesor.

 

Pilas y colas

 

  • Stack (pila) es una tabla lineal está bien definido para las inserciones y deleciones en el remolque.
  1. Nos pila permite la inserción y la supresión de un extremo llamado pila (parte superior), y el otro extremo se llama la parte inferior pila (inferior), sin ningún tipo de elementos de datos llamados pila vacía. (El último en salir)

  • definición recursiva: en lenguajes de alto nivel, diferentes llamadas y otras funciones a sí mismos no son esenciales. Somos propietarios de una llamada directa o llame a su propia función indirectamente llamando a una serie de declaraciones, llamado funciones recursivas. Los siguientes efectos:
  • El principio pila de recursión se lleva a cabo: la etapa de primera fila, uno para cada uno variables, funciones, parámetros y direcciones de retorno locales recursivas se inserta en la pila. En la fase de retorno, la parte superior de la pila de variables locales, los parámetros y la dirección de retorno se extrae por el resto de la ejecución del código vuelve a llamar a la jerarquía, es decir, para restaurar el estado de la llamada.
  • Resta, multiplicación y división (cuatro operaciones) también utilizan el principio de pila: hay paréntesis, a la izquierda en la pila, y un paréntesis a la derecha en la parte posterior de la pila, por lo que el período de operación digital.
  • Postfix (RPN): Cada números y símbolos de izquierda a expresión traversal derecha, un número en la pila, el símbolo se encuentra en las dos figuras pila de la pila, calcula el resultado de la operación en la pila, todo el camino para obtener resultados.
  • Resultados: Para conseguir una computadora con la capacidad de manejar nuestras expresiones (infijos) el estándar habitual, lo más importante es dos pasos:
  • expresiones infijos en la notación de sufijo (firmar a cabo operaciones a pila)
  • La expresión de sufijo calcula el resultado (por pila digitales fuera de servicio)
  • Es iterativa y recursiva diferencia: el uso de la estructura de bucle de iteración utilizando una estructura de selección recursiva. Recursiva hacer la estructura del programa clara, concisa y fácil de entender. Sin embargo, un gran número de llamadas a funciones recursivas creará copias, pasará mucho tiempo y la memoria. La iteración es necesario llamar repetidamente funciones y memoria adicional.

 cola

  • Queue (cola) sólo se permite en el extremo de inserción y en el otro extremo de la operación de eliminación mesa lineal.
  • colas circular y comparación cadena de colas, el funcionamiento básico es la constante de tiempo, es decir, O (1), pero es una solicitud anterior buen espacio de cola circular, no se libera durante su uso; la cadena de cola para cada nodo de la aplicación y la liberación será una cierta duración de la administración, si un equipo en el equipo con frecuencia, o cola circular un buen punto. Para el espacio, una cola circular deben tener una longitud fija, el número de elementos con el espacio de almacenamiento y el problema de los residuos; cadena y la cola no tiene este problema, a pesar de la necesidad de un campo de puntero producirá algo de espacio superior, pero puede ser aceptable. Así que en el espacio, la cadena de cola más flexible.

 

cadena

  • String (cadena): es una secuencia finita de cero o más caracteres, y la cadena de nombre.
  • Mesa lineal está más preocupado por la operación de un solo elemento, como la búsqueda de un elemento, insertar o eliminar un elemento, pero cuanto más la cuerda es encontrar la posición de una subcadena, para dar la posición especificada de la subcadena, en sustitución de la operación subcadena.

 

  • cuerdas comparar: algoritmo de coincidencia de patrones KMP

 https://www.cnblogs.com/zhangtianq/p/5839909.html

  Árbol (Tree): una pluralidad de lista enlazada para representar la estructura

  • Es n (n> = 0) de un conjunto finito de nodos. n = 0, llamado árbol nulo. En cualquier un árbol no vacío: una y sólo una específica llamada el nodo raíz (raíz); cuando n> 1, los nodos restantes pueden ser divididos en m (m> 0) disjunta finito conjunto T1, T2, ...., Tn, en el que cada conjunto es en sí mismo un árbol, y el subárbol con raíz llamada (rama).

 

árbol binario:

  • Cinco formas básicas: árbol binario vacío, y sólo un nodo raíz, y sólo la raíz subárbol izquierdo; root subárbol derecho; la raíz tanto del subárbol izquierdo tienen el subárbol derecho; forma lineal puede ser entendido como un árbol una forma especial, el árbol oscilante, es decir, todos los sub-árboles se dejan nodo derecho o del nodo.
  • Completa árbol binario: El orden de almacenamiento, no es un árbol binario completo, debido a que algunos nodos vacíos hará que la matriz al espacio inútil.
  • Binario: las estructuras de almacenamiento de lista binarios, un campo de datos de puntero y dos campos.
  • Antes DLR-- preorden de recorrido (delante de la raíz, de izquierda a derecha, una raíz del árbol es siempre delante del subárbol izquierdo, y el subárbol izquierdo es siempre delante del subárbol derecho)
  • LDR-- finde de recorrido (en la raíz, de izquierda a derecha, un subárbol izquierdo del árbol es siempre delante de la raíz, la raíz es siempre delante del subárbol derecho)
  • LRD-- orden posterior (después de las raíces, de izquierda a derecha, un subárbol izquierdo del árbol es siempre delante del subárbol derecho, siempre en frente de la raíz subárbol derecho)
  • Se sabe en la parte delantera y trasera se puede determinar árbol binario único, un árbol binario antes y después no se puede determinar de forma única conocida.

 

 

 

 

 

 

  • binario roscado: lista doblemente enlazada estructura de almacenamiento, los vacíos izquierda de nodo secundario puntos a su predecesor, el vacío derecho apuntando hijo al nodo sucesor. Bool determinar, además, si dos nodos secundarios.
    Si con frecuencia tiene que recorrer un árbol binario o encontrar nodos necesitan ser atravesado en la secuencia de predecesor y sucesor, con almacenamiento binario lista de estructuras de referencia es una buena opción.

    árbol de Huffman: El método de codificación de compresión más básico - la codificación de Huffman. En general, se supone que va a codificarse como un conjunto de caracteres {d1, d2, ... dn}, el número o la frecuencia de aparición de los caracteres individuales en el mensaje se establece {w1, w2, ..., wn}, a D1, D2, ..., DN como nodos hoja a w1, w2, ..., wn árbol de Huffman se construye como un nodo de hoja de valores de peso correspondiente. rama izquierda del árbol Huffman predeterminado representa 0, 1 representante de la rama derecha, desde el nodo raíz a nodos de hoja de la trayectoria de la secuencia de rama que consiste en 0 y 1 será el carácter correspondiente nodo para la codificación, esto es Huff codificación Manchester.

mapa

Encuentra (Buscando)

  • Se basa en un valor dado, que determina una clave igual a un valor dado de elemento de datos (o grabado) en una tabla de consulta.
  • Lógicamente, un conjunto de estructura de datos de búsqueda se basa en, no existe una relación esencial entre el conjunto de registros. Cuando el almacenamiento puede ser organizada en un conjunto de tablas de búsqueda, un árbol como la estructura.
  • tabla de consulta estática puede ser utilizado para organizar la estructura de datos de un lineal, secuencial algoritmo de búsqueda puede ser utilizado, si la clave de ordenación principal, las técnicas de búsqueda binarios se pueden aplicar para la búsqueda eficiente.
  • dinámicas de búsqueda, puede encontrar consideraciones técnicas árbol de tipo binario. También se puede utilizar para encontrar la estructura de la tabla hash.
  • de búsqueda estática: Desde el inicio de la primera o la última, que atraviesa encontrar cada elemento. La determinación de si cada uno se utilizarán fuera de rango para, puede fijar un valor mínimo (Sentinel) mientras bucle determina entonces si el mismo valor.

  • La búsqueda binaria (binario de búsqueda): siempre que los registros de la tabla ordenada lineal es clave, mesa lineal debe ser almacenado en orden. Pensamiento: En tabla de orden, tomada como una grabación intermedia comparación de objetivo, si es igual, la búsqueda tiene éxito; si el valor es menor que la clave de registro intermedio predeterminado, la búsqueda continúa en la región media izquierda, es mayor que si la búsqueda continúa en la zona derecha.
  1. Contras: inserción frecuente y mesas de borrado, el mantenimiento de la secuenciación ordenada traerá ninguna pequeña cantidad de trabajo, no se recomienda.
  • Encuentra la interpolación: Los métodos de descubrimiento comparan las palabras clave de la clave de búsqueda tabla de búsqueda de palabras clave y registrar el valor máximo y mínimo calculado no es un intermedio, y Comparado a cabo por interpolación.
  1. Desventajas: datos de la distribución desigual no es adecuado para el uso de interpolación de encontrar.
  • Fibonacci hallazgo: de acuerdo a la proporción áurea.
  • La búsqueda binaria para la adición y la eliminación de la operación (a mediados = (baja + altura) / 2), la interpolación para encontrar cuatro operaciones aritméticas complejas (mediados = Baja + (alto-bajo) * (llave de un [baja]) / ([alta] a - un [baja])), para encontrar la suma o resta de Fibonacci (mediados = bajo + F [k-1] -1), el proceso de búsqueda enormes cantidades de datos, tales diferencias sutiles puede afectar a la final Encuentra la eficiencia.

Si el conjunto de datos de búsqueda es una tabla ordenada lineal, y se almacena de forma secuencial, se puede utilizar para encontrar binaria, la interpolación, el algoritmo de búsqueda de Fibonacci implementado, pero dado que el orden en las operaciones de inserción y supresión, se tarda mucho tiempo.

  • árbol de tipo binario: con el fin de ordenar, encontrar y fácil de insertar, eliminar duro.
  • Equilibrado árbol binario: el ideal de un algoritmo de tabla dinámica de búsqueda, para encontrar y de inserción y la complejidad del tiempo de eliminación es O (logN). No hay pedido para la colección en sí, sino también con frecuencia se encuentran la necesidad de inserción frecuente y operaciones de borrado.
  • Árbol B: Para la memoria y el intercambio de datos en el disco duro para prepararse.

tabla hash (tabla hash)

  • búsqueda en la tabla de secuencia es un [i] es el valor de la clave "==", se considera igual hasta que la búsqueda tiene éxito, vuelvo. Cuando se pide búsqueda en la tabla, es posible multiplexar a [i] y la clave para encontrar el "<" o ">" para binario, hasta que encuentre el índice i. El objetivo final es encontrar el i, de hecho, es entonces el método de cálculo relativamente subíndice, posición por almacena secuencialmente, Loc (AI) = Loc (a1) + (i-1) * c, es decir a través del primer elemento posición de almacenamiento de memoria además de la posición células i-1, para dar dirección de memoria final.
  • Hash definición de tabla: técnica de hashing es crear un registro correspondiente a la relación determinada f entre la posición de almacenamiento y su palabra clave, la palabra clave que cada tecla corresponde a una posición de memoria f (clave). Llamamos a la correspondencia entre la función resumen F, también conocida como función hash (hash). Esta idea mediante el uso de registros de hash técnica se almacenan en un espacio de almacenamiento contiguo, este espacio de almacenamiento se llama hachís continua o una tabla hash (tabla hash).
  • La tecnología hash es tanto un método de almacenamiento, sino también un método de búsqueda.
  • La tecnología de hash es el más adecuado para resolver el problema es encontrar el valor de igualdad con el registro dado.
  • Hash principio constructivo función: simple cálculo, la distribución de direcciones de hash
  1. El tiempo necesario para calcular la dirección de hash
  2. longitud de palabra clave
  3. El tamaño de la tabla hash
  4. La distribución de las palabras clave
  5. Encontrar la frecuencia de grabación
  • Dirigir método de direccionamiento: f (clave) = una tecla * + b (a, b son constantes)
  • Análisis digital: Como se llevará a cuatro el número de teléfono como una clave, ya que los correspondientes tres mejores marcas, el intermedio correspondiente a cuatro casa, la probabilidad de grandes repetida.
  • Método Medio cuadrados: para tomar el centro de la plaza un par de palabras clave para la dirección. No sabemos para una distribución de palabras clave, pequeños trozos.
  • Método de plegado: palabras clave trozos de izquierda a derecha se divide en partes iguales, después de unos pocos se suman para hacer una dirección de hash. Adecuada a las circunstancias más dígitos palabras clave.
  • Método de números aleatorios: función aleatoria dirección de clave hash. f (clave) = (llave) al azar. Palabra clave de longitud desigual.
  • En adición estancia I: El método constructor más comúnmente utilizado. La fórmula es f (clave) = clave mod p (p <= m) (tabla hash la longitud es de m, p es típicamente igual a o menor que la longitud de la mesa juntos más pequeño número primo o Factor comprende no menos de 20 masa)
  • El procesamiento de la colisión de hash:
  1. -Direccionable abierta: es el caso de conflicto, fue a buscar a la siguiente dirección de hash vacío, siempre y cuando la tabla hash es lo suficientemente grande, la dirección de hash vacío siempre se puede encontrar y tiendas de discos. Fórmula: fi (clave) = (f (clave) + di) MOD m (di = 1,2,3, ..., m-1). También se llama sondeo lineal método.
  2. Método de detección aleatoria: es decir, método de detección lineal no es di lineal más 1, pero con una función aleatoria. Fórmula: fi (clave) = (f (clave) + di) MOD m (di = 1 cuadrado, cuadrado -1, 2 cuadrado, cuadrado -2, ..., q cuadrado, q <= m / 2) fi ( clave) = (f (clave) + di) MOD m (secuencia número di-aleatorio es a)
  3. Re-hash método de la función: fi (clave) = RHI (clave) (i = 1,2, ..., K), RHI aquí es diferente funciones hash, se puede dejar en frente del resto de dicha otra de plegado, en uso en todo tomar la plaza, cuando el conflicto de direcciones de hash, a una función hash para calcular el cambio. Desventajas: el correspondiente incremento en el tiempo de cálculo.
  4. Cadena método de dirección: todos los sinónimos de las palabras clave registros se almacenan en una sola lista enlazada, hay conflicto aumenta nodos. Si el conflicto y más, necesidad de pérdida de rendimiento de desplazamiento en la búsqueda de una lista única.
  5. Ley Pública área de desbordamiento: dividido en tabla básica y la tabla de desbordamiento, si no puede encontrar el desbordamiento de la tabla base fue a la mesa de encontrar. Son pocos los casos de conflicto de datos, el rendimiento sigue siendo muy alta.

 

  • análisis de rendimiento tabla hash de búsqueda: revisa toda la eficiencia es el más alto, debido a que la complejidad del tiempo es O (1), pero en el caso no entraba en conflicto. Por lo que el medio de búsqueda depende de la complejidad de las siguientes categorías:
  1. función Hash es uniforme
  2. El método de tratamiento de los conflictos, como la dirección de la cadena no se acumula, por lo que tienen que encontrar un mejor desempeño promedio.
  3. Llenado del factor de la tabla hash, el factor de carga a = el número de entradas en el hash de grabación / mesa de longitud. Cuanto mayor es el conflicto más fácil, por lo general una tabla hash para encontrar el espacio para establecer que una colección de grandes, aunque algunos desperdicio de espacio, pero a cambio es encontrar gran mejora eficiente.

secuencia

  • Interior y exterior Ordenar Ordenar: la fila es el proceso de clasificación, todos los registros a ser ordenados están todos dispuestos en la memoria. clasificación externa es debido al número de registros ordenar también, no se puede colocar en la memoria al mismo tiempo, entre el interior y la necesidad de intercambio de datos para ser almacenados una pluralidad de veces.
  1. El ordenar: ordenación por inserción, cambio de clasificación, ordenación por selección, ordenamiento por mezcla.
  2. algoritmos simples: ordenamiento de burbuja, seleccionar, insertar directamente
  3. algoritmos mejorados: Colina especie, pila de clasificación, ordenamiento por mezcla, más o menos rápida
  • Ordenar burbuja (burbuja Ordenar): comparaciones por pares con el registro suburbios de palabras clave, si el orden inverso de cambio, hasta que no hay ningún registro hasta ahora en orden inverso.
  • Selección Sort (ordenación por selección simple): Mediante la comparación de los tiempos entre palabra clave ni, la palabra clave se selecciona entre el mínimo de grabación en la grabación de Ni + 1, y y i (1 <= i <= n) registra intercambio . (Selección de un cambio mínimo)
  • Directamente en (Straight Inserción Sort): un registro en la ordenadas sido ordenado, obteniendo de este modo un nuevo registro ordenado por número en la Tabla 1.
  • Colina de clasificación (Shell Sort): La distancia un "incremento" de una composición de la secuencia de la grabación, asegurando así que los resultados se clasifican directamente en la secuencia obtenida no se ordena sustancialmente orden local.
  • Pila de clasificación (Heap Sort): árbol binario completo, cada valor de nodo es igual o mayor que dicho izquierda y gran pila superior hijo derecho, o menos, dijo que los niños pequeños alrededor de la pila superior.
  • Ordenamiento por mezcla (fusión de Clasificar): como un árbol invertido. Supone que la secuencia inicial contiene n registros, puede ser visto como el n ordenó subsecuencias, cada subsecuencia de longitud 1, y luego fusionar veintidós dar [/ 2 n] ([x] denota un mínimo no inferior a x un entero) la secuencia ordenada de longitud 1 o 2; veintidós de combinación de nuevo. Relativamente si (SR [i] <SR [j]) Se requiere la comparación de modo pairwise, el salto no está presente, es una especie estable, es una memoria para la comparación (secuencia de copia, y después se combina), pero algoritmos altamente eficientes y estables.
  • Ordenación rápida (Quick Sort): Ordenar por fila viaje a grabarse se divide en dos partes independientes, en el que la parte clave de la clave de registro es más pequeña que la otra parte de la grabación, la grabación se puede continuar, respectivamente, dos porciones tipo Reed a fin de lograr una secuencia ordenada todo el propósito.
  1. Colina bastante directamente en, pertenecen a la misma clase se inserta; HeapSort bastante selección especie, con perteneciente a la categoría seleccionada; rápido Ordenado equivalente burbuja más lento tipo, que pertenece a la clase de conmutación.
  2. Si la matriz es muy pequeño, pero no tan rápido ordenar la inserción directa especie es más mejor (conectado directamente a una especie simple en el mejor rendimiento). Debido a usos quicksort recursividad.
  3. Colina ordenación rápida especie >>> directamente en> Seleccionar Ordenar> Bubble Ordenar

Supongo que te gusta

Origin www.cnblogs.com/wwhhgg/p/12566268.html
Recomendado
Clasificación