[PYTHON] Blasensortierung mit flauschiger Animation

Die grundlegendste "Blasensortierung" des Ausrichtungsalgorithmus.

Der Ursprung des Namens ist "Schaum". Es wird vorsichtig sortiert, damit die Blasen aufsteigen. Erstellen wir daher eine Animation, die Blasen nach Blasen sortiert.

Schaum

import random
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML

fig = plt.figure()

ims = []
for _ in range(30):
    image = []
    for _ in range(30):
        image += plt.plot(random.randint(10, 100), random.randint(10, 100), 
                          markersize=random.randint(10, 100), marker="o", c="white", 
                          markeredgecolor="blue", alpha=0.5)
    ims.append(image)
        
#In Video konvertieren
ani = animation.ArtistAnimation(fig, ims, interval=100, repeat_delay=1000)
ani.save("bubble.gif", writer='pillow') #Als GIF-Datei speichern
HTML(ani.to_jshtml()) #Anzeige in HTML

Hey, es ist schaumig, nicht wahr? Was hast du dir vorgestellt? Kohlensäurehaltige Getränke? Bier?

bubble.gif

Blasensorte

import random
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML

def bubble_sort(data, x=0):
    movie = [] #Video = Liste, in der eine Reihe von Standbildern gespeichert sind

    image = []
    for i in range(len(data)):
        im1 = plt.plot(x, i, markersize=data[i], marker="o", c="white", 
                       markeredgecolor="blue", alpha=0.5)
        image += im1
    movie.append(image) #Fügen Sie ein Standbild hinzu

    for index in range(len(data)-1, 0, -1):
        for low in range(index):
            image = []
            for i in range(len(data)):
                if i == low or i == low + 1:
                    color = "skyblue"
                else:
                    color = "white"
                
                im1 = plt.plot(x, i, markersize=data[i], marker="o", c=color, 
                               markeredgecolor="blue", alpha=0.5)
                im2 = plt.plot(x, i, markersize=20, marker="$" + str(data[i]) + "$", 
                               c="blue", alpha=0.5)
                image += im2
                image += im1
                
            movie.append(image)

            if data[low] > data[low+1]:
                tmp = data[low+1]
                data[low+1] = data[low]
                data[low] = tmp
                
                image = []
                for i in range(len(data)):
                    if i == low or i == low + 1:
                        color="cyan"
                    else:
                        color="white"
                        
                    im1 = plt.plot(x, i, markersize=data[i], marker="o", c=color, markeredgecolor="blue", alpha=0.5)
                    im2 = plt.plot(x, i, markersize=20, marker="$" + str(data[i]) + "$", c="blue", alpha=0.5)
                    image += im2
                    image += im1
                movie.append(image)
                
    return movie
data = [(i + 1) * 10 for i in range(10)]
random.shuffle(data)
fig = plt.figure(figsize=(8, 8))
movie1 = bubble_sort(data)
ani = animation.ArtistAnimation(fig, movie1, interval=1000, repeat_delay=1000)
ani.save("bubble_sort.gif", writer='pillow') #Als GIF-Datei speichern
HTML(ani.to_jshtml()) #Anzeige in HTML

Dies ist auf jeden Fall eine Blasensorte. Vielen Dank.

bubble_sort.gif

Schließlich

Ja, ich habe mein Bestes gegeben, um es zu schaffen. Nur zum Sortieren.

Recommended Posts

Blasensortierung mit flauschiger Animation
Blasensorte
Blasensorte
Animation mit matplotlib
Blasensortierung in Python
Blasensortierung ohne Sortierung
Python-Anfänger fordern Cpaw CTF Q14 mit Blasensortierung heraus
Animation der Diffusionsgleichung mit NumPy
Sortieren Sie große Dateien mit Python
Python-Anfänger organisieren Blasensorten
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
Erstellen Sie eine Plotanimation mit Python + Matplotlib
Sortieren Sie zufällige FizzBuzz-Spalten mit schneller Sortierung
[IOS] Zerlegen Sie die GIF-Animation mit Pythonista3.
Implementierte Blasensortierung in Java (BubbleSort)
[Python] Einzeilige Starlin-Sortierung mit 50 Zeichen
Einfache Animation mit matplotlib (mp4, gif)