Prerrequisitos: Introducción a Matplotlib , Introducción a PyQt5 , Bubble Sort
Aprender cualquier algoritmo puede ser difícil y, dado que está aquí en GeekforGeeks, definitivamente le encanta comprender e implementar varios algoritmos. Es difícil para cada uno de nosotros entender los algoritmos a la primera. Tendemos a entender más aquellas cosas que se visualizan correctamente. Uno de los problemas básicos con los que comenzamos es la clasificación de algoritmos. Puede que haya sido un desafío para ti aprender esos algoritmos, así que aquí estamos hoy mostrándote cómo puedes visualizarlos.
Módulos necesarios
Matplotlib: terminal de instalación.
pip install matplotlib
PyQt5:
pip install PyQt5==5.9.2
Entonces, con todo eso configurado, comencemos con la codificación real. Primero, cree un archivo llamado main.py y agréguele las siguientes líneas de código.
Python3
# imports import random from matplotlib import pyplot as plt, animation # helper methods def swap(A, i, j): A[i], A[j] = A[j], A[i] # algorithms def bubblesort(A): swapped = True for i in range(len(A) - 1): if not swapped: return swapped = False for j in range(len(A) - 1 - i): if A[j] > A[j + 1]: swap(A, j, j + 1) swapped = True yield A def visualize(): N = 30 A = list(range(1, N + 1)) random.shuffle(A) # creates a generator object containing all # the states of the array while performing # sorting algorithm generator = bubblesort(A) # creates a figure and subsequent subplots fig, ax = plt.subplots() ax.set_title("Bubble Sort O(n\N{SUPERSCRIPT TWO})") bar_sub = ax.bar(range(len(A)), A, align="edge") # sets the maximum limit for the x-axis ax.set_xlim(0, N) text = ax.text(0.02, 0.95, "", transform=ax.transAxes) iteration = [0] # helper function to update each frame in plot def update(A, rects, iteration): for rect, val in zip(rects, A): rect.set_height(val) iteration[0] += 1 text.set_text(f"# of operations: {iteration[0]}") # creating animation object for rendering the iteration anim = animation.FuncAnimation( fig, func=update, fargs=(bar_sub, iteration), frames=generator, repeat=True, blit=False, interval=15, save_count=90000, ) # for showing the animation on screen plt.show() plt.close() if __name__ == "__main__": visualize()
Producción:
Publicación traducida automáticamente
Artículo escrito por debdutgoswami y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA