¡Una visita obligada para las preguntas de la entrevista! 5 algoritmos de clasificación en Python y su código de implementación

La clasificación es un conocimiento y una habilidad necesarios para todos los ingenieros y desarrolladores de TI. No solo debe pasar la entrevista de programación, sino también comprender el algoritmo en sí. Los diferentes algoritmos de clasificación demuestran perfectamente cómo el diseño del algoritmo tiene un impacto tan grande en la complejidad, velocidad y eficiencia del programa.

Echemos un vistazo a los 5 mejores algoritmos de clasificación, que también son los más comunes, a menudo se preguntan en las entrevistas, y veamos cómo implementarlos en Python.

 

1. Clasificación de burbujas

La clasificación de burbujas es una de las que se enseña con más frecuencia en el curso introductorio de informática porque explica claramente el principio de funcionamiento de la clasificación, a la vez que es simple y fácil de entender. La clasificación de burbujas recorrerá la lista y comparará pares de elementos adyacentes. Si los elementos están en el orden incorrecto, se intercambiarán. Repita el recorrido de la parte no ordenada de la lista hasta que la lista esté ordenada. Debido a que la clasificación de burbujas pasa repetidamente por partes no clasificadas de la lista, su complejidad en el peor de los casos es O (n²).

 

2. Seleccione Ordenar

La ordenación por selección también es bastante simple, mejor que la ordenación por burbujas. Si desea elegir entre estos dos, es mejor utilizar el "orden de selección correcto" predeterminado. Usando la clasificación de selección, dividimos la lista / matriz de entrada en dos partes: una sublista de elementos ordenados y una sublista de elementos restantes que componen el resto de la lista.

Nos encontramos en primer lugar el elemento más pequeño de la lista secundaria no está ordenada, y lo coloca en el extremo de las sub-listas ordenadas. Por lo tanto, obtenemos continuamente el elemento sin clasificar más pequeño y lo colocamos en la sublista ordenada en orden ordenado. Este proceso se repetirá hasta que la lista esté completamente ordenada.

 

3. Orden de inserción

La ordenación por inserción es más rápida que la ordenación por burbujas y la ordenación por selección, y se puede decir que es más simple. ¡Al igual que cuando se juega un juego de cartas, el proceso de barajar se repite por inserción! En cada iteración del bucle, la ordenación por inserción elimina un elemento de la matriz. Luego busque la posición del elemento en otra matriz ordenada e insértela. Repite este proceso hasta que no quedan elementos de entrada.

 

4. Combinar ordenación

La ordenación por fusión es un ejemplo de un algoritmo perfecto para dividir y conquistar. El uso de este algoritmo solo requiere los siguientes dos pasos principales:

  • (1) Divida continuamente la lista sin clasificar hasta que haya N sublistas, donde cada sublista tiene 1 elemento "sin clasificar" y N es el número de elementos en la matriz original.
  • (2) Fusión repetida, es decir, fusionar dos sublistas juntas a la vez para generar una nueva sublista ordenada hasta que todos los elementos se fusionen completamente en una matriz ordenada.

 

5. Clasificación rápida

La ordenación rápida también es un algoritmo de división y conquista, al igual que la ordenación combinada. Aunque es un poco complicado, en la mayoría de las implementaciones estándar, su velocidad de ejecución es mucho más rápida que la ordenación por fusión, y rara vez alcanza la complejidad del peor de los casos de O (n²). Tiene tres pasos principales:

  • (1) Primero seleccionamos un elemento de la matriz y lo llamamos pivote.
  • (2) Mueva todos los elementos más pequeños que el eje a la izquierda del eje; mueva todos los elementos más grandes que el eje a la derecha del eje. Esto se llama operación de partición.
  • (3) Aplique de forma recursiva los 2 pasos anteriores a cada submatriz de elementos cuyo valor sea menor o mayor que el valor del eje anterior. Si está interesado en Python, puede agregar mi WeChat: abb436574 y recibir un conjunto de materiales de aprendizaje y cursos de video gratis ~

Supongo que te gusta

Origin blog.csdn.net/weixin_45820912/article/details/108364883
Recomendado
Clasificación