Estructura de datos y algoritmo (implementación de Golang) (18) Algoritmo de clasificación-Prefacio

Algoritmo de clasificación

En el desarrollo de los seres humanos, hemos aprendido a contar, por ejemplo, sabemos cuántos conejos ha cazado hoy Xiaoming. Por otro lado, también necesitamos juzgar cuál está cazando más hoy, y tenemos que comparar.

Entonces, surgió la necesidad natural de clasificar. Por ejemplo, Xiao Ming golpeó a 5 conejos, Xiao Wang golpeó a 8 y había más de cien personas de la tribu. Tenemos que hablar de recompensas de mérito, quien juega más, las recompensa más grandes.

Cómo ordenar, cómo encontrar a la persona que golpea más conejos en el tiempo más rápido, esta es una pregunta muy simple.

Después de muchos años de investigación, han aparecido muchos algoritmos de clasificación, que van de rápido a lento. Por ejemplo:

  1. Tipo de inserción: tipo de inserción directa y tipo Hill
  2. Selección de clasificación: clasificación de selección directa y clasificación de montón
  3. Tipo de intercambio: tipo burbuja y tipo rápido

Su complejidad es la siguiente:

Concepto de estabilidad
Definición: Puede garantizar dos números iguales. Después de la clasificación, el orden de las posiciones antes y después de la secuencia permanece sin cambios. (A1 = A2, A1 está delante de A2 antes de ordenar, y A1 todavía está delante de A2 después de ordenar)
Importancia: La esencia de la estabilidad es mantener el orden de inserción de datos con los mismos atributos. Evita ordenar esta vez.

La clasificación de burbujas es posiblemente el peor algoritmo de clasificación.

Consideramos el ordenamiento de burbujas, el de selección directa y el de inserción directa como el algoritmo de ordenación principal. El rendimiento del ordenamiento de inserción directa es el mejor. En términos generales, cuando la matriz de ordenación es npequeña, el ordenamiento de inserción directa puede ser mejor que cualquier ordenación. El algoritmo debe ser rápido, se recomienda usarlo solo en la clasificación a pequeña escala.

La ordenación en pendiente es una versión mejorada de la ordenación por inserción directa, que es más rápida que la ordenación por selección directa y la ordenación por inserción directa, y esta mejora del rendimiento se hace más evidente a medida que aumenta la escala. Debido a que el algoritmo es fácil de entender, podemos usarlo cuando la matriz ordenada es de tamaño mediano. A una escala muy grande, su rendimiento no es tan malo, pero se recomienda el siguiente algoritmo de clasificación avanzado para la clasificación a gran escala.

La clasificación rápida, la combinación de clasificación y la clasificación de montón son algoritmos de clasificación más avanzados.

En la actualidad, se considera que el mejor algoritmo de clasificación avanzado integral es la clasificación rápida. El tiempo promedio para la clasificación rápida es el más corto, y es el algoritmo de clasificación integrado en la mayoría de las bibliotecas de programación.

La ordenación en montón también es un algoritmo de ordenación rápida. Al mantener un árbol binario, el nodo raíz del árbol es siempre el más grande o el más pequeño para lograr la ordenación.

La ordenación por fusión utiliza el método de dividir y conquistar al igual que la ordenación rápida, ordenando recursivamente cada subsecuencia primero y luego fusionando las dos secuencias ordenadas en una secuencia ordenada.

Explicaremos diferentes algoritmos de clasificación en este capítulo.

Entrada de artículo de serie

Soy la estrella Chen, bienvenido he escrito personalmente estructuras de datos y algoritmos (Golang lograr) , comenzando en el artículo para leer más amigable GitBook .

Supongo que te gusta

Origin www.cnblogs.com/nima/p/12724847.html
Recomendado
Clasificación