¿Has "escuchado" estos algoritmos de clasificación clásicos?

¡Hola a todos, bienvenidos al salón de clases de programación de Crossin!

Los algoritmos son una parte importante del cuerpo de conocimientos de programación. Una vez que haya dominado algunos conceptos básicos de programación, debe comprender el conocimiento relacionado con los algoritmos para poder escribir un código más eficiente. El algoritmo de clasificación es un contenido muy básico en el algoritmo. Muchos entrevistadores también utilizan la clasificación para examinar la capacidad algorítmica básica del entrevistador.

Los algoritmos de clasificación comunes son: clasificación de burbuja, clasificación de selección, clasificación de inserción, clasificación rápida, etc.

Los principiantes pueden tener un poco de dificultad cuando solo están expuestos a estos algoritmos. Pero si hay algunas demostraciones visuales intuitivas, es muy útil comprender y dominar rápidamente el algoritmo de clasificación.

Hemos implementado un programa de demostración de algoritmo de clasificación visual en Python, y no solo puede "ver" sino también "escuchar". Permítame mostrarle el proceso de ejecución de cinco algoritmos de clasificación clásicos: clasificación por burbuja, clasificación por selección, clasificación por inserción, clasificación rápida y clasificación por fusión.

Mostrar resultados:

[Bienestar del trastorno obsesivo compulsivo] ¿Ha "escuchado" estos algoritmos de clasificación clásicos?

Recuerda encender tu voz, hay pequeños huevos de Pascua al final de los créditos.

a835b787f7eac22995d91733128fb592.gif

db7ae3fbca24858b1fb4959a73a6a977.gif

587799db9320332be58478f460cb8a33.gif

4ac858a9db1d948b5144e9deaaee7a6c.gif

0f12e2250a76ca6d5532ddda1bdb4306.gifTodos estos son algoritmos de clasificación clásicos. Las discusiones sobre su implementación y la complejidad del algoritmo se mencionan en casi todos los libros de algoritmos. También puede encontrar innumerables artículos buscando directamente en Internet, por lo que este artículo no los repetirá aquí. Una repetición. Si está interesado en los algoritmos, puede decírselo en el área de mensajes, y también considerará escribir algún contenido sobre algoritmos en el futuro.

La idea de este programa surge de un video extranjero:

https://www.bilibili.com/video/av685670

Principio de implementación:

El código de demostración utiliza principalmente dos bibliotecas: matplotlibpyaudio .

matplotlib es una biblioteca de gráficos de Python ampliamente utilizada, aquí usamos animación para lograr efectos de animación.

Fragmento de código principal:

from matplotlib import animation


anis = animation.FuncAnimation(
    self.fig, 
    self._animate, 
    init_func=self._ini_animate,
    frames=self.frames, 
    interval=self.interval,
    repeat=False
)
# anis.save("a.gif", writer='imagemagick', fps=60, bitrate=-1)
plt.show()

FuncAnimation puede generar animaciones basadas en gráficos. La función principal es el segundo parámetro, que debe proporcionar una función para especificar los datos de cada cuadro en la animación.

La biblioteca de pyaudio se utiliza para implementar efectos de sonido durante la clasificación.

Fragmento de código principal:

import pyaudio
from makesound import play_tone


self.stream = self.audio.open(format=pyaudio.paFloat32,
            channels=1, rate=44100, output=1)
play_tone(self.stream, frequency=f)

La función play_tone reproduce tonos de diferentes frecuencias según el parámetro de frecuencia pasado. En el programa, la frecuencia se calcula a partir del valor correspondiente operado durante la clasificación.

Instrucciones:

La biblioteca de incendios también se utiliza en el programa para realizar la operación a través de la línea de comando + parámetros.

Ejecutar ejemplo:

$ python start.py sortex quick_sort

El segundo parámetro es el algoritmo de clasificación, y el valor correspondiente es:

Clasificación de burbujas - bubble_sort

Clasificación de selección - select_sort

Clasificación por inserción - insert_sort

Clasificación rápida - clasificación_rápida

Combinar ordenación - merge_sort

Además, también admite parámetros personalizados, que se utilizan para establecer la secuencia original de clasificación, el intervalo de animación, etc.:

$ python start.py sortex quick_sort [1,3,5,4,2,6]
$ python start.py sortex quick_sort --interval=50

El código completo ha sido subido a github. Si no está familiarizado con los algoritmos de clasificación, puede intentar modificar los datos de clasificación, la velocidad de ejecución y otros parámetros en el código, y observar el proceso y la eficiencia de los diferentes algoritmos de clasificación, para comprender estos algoritmos de clasificación. Y si ya tiene una cierta comprensión del algoritmo, puede considerar agregar más demostraciones de algoritmos en este marco.

El código principal y la visualización de este programa están implementados por @Provin.M.

Código fuente: snippet/algo.vi en master crossin/snippet GitHub


El nuevo libro de Crossin "Action on Code: Learning PYTHON Programming from Zero Basics (CHATGPT Edition)" ya está en el mercado.

Este libro se esfuerza por ser fácil de entender, para que los "principiantes" de base cero que no tienen ninguna experiencia en programación puedan aprender Python. El contenido comienza con los pasos más básicos de la construcción del entorno y, gradualmente, profundiza en las aplicaciones prácticas comunes. Mientras explica los puntos de conocimiento, está equipado con ejemplos de código correspondientes, para que los lectores puedan aprender y practicar para profundizar su comprensión.

El libro cubre la construcción del entorno Python, gramática básica, tipos de datos comunes, módulos prácticos, expresiones regulares, programación orientada a objetos, programación multitarea y otros puntos de conocimiento. Además, se proporcionan tres proyectos prácticos de rastreador, GUI y juego.

El libro también utiliza de manera innovadora ChatGPT como ayuda para el aprendizaje de la programación, lo que lleva a los lectores a explorar un nuevo modo de aprender a programar en la era de la IA.

0c113ed197e6b853eb94efdae7f533a8.jpeg

Gracias por retuitear y dar me gusta ~

Supongo que te gusta

Origin blog.csdn.net/qq_40523737/article/details/131179734
Recomendado
Clasificación