아와 아와 애니메이션에서 버블 정렬

17079 단어 파이썬matplotlib
정렬 알고리즘 중 가장 기본적인 "버블 정렬".

그 이름의 기원은 "거품"입니다. 거품이 떠오르도록, 부드럽게 정렬됩니다. 따라서 거품으로 거품 정렬하는 애니메이션을 만들어 봅시다.

거품


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)

# 動画に変換する
ani = animation.ArtistAnimation(fig, ims, interval=100, repeat_delay=1000)
ani.save("bubble.gif", writer='pillow') # gif ファイルとして保存
HTML(ani.to_jshtml()) # HTML上で表示

이봐, 거품 같은거야? 무엇을 이미지 했습니까? 탄산 음료? 맥주?



※ 애니메이션이 종료되어 정지해 버렸을 경우, 이미지를 클릭하면 다시 한번 움직일 수 있다고 생각합니다.

거품 정렬


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

def bubble_sort(data, x=0):
    movie = [] # 動画=静止画の集合を格納するリスト

    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) # 静止画を1つ追加する

    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') # gif ファイルとして保存
HTML(ani.to_jshtml()) # HTML上で表示

이것은 아무래도 거품 정렬입니다. 감사합니다.



※ 애니메이션이 종료되어 정지해 버렸을 경우, 이미지를 클릭하면 다시 한번 움직일 수 있다고 생각합니다.

마지막으로



그래, 상당히 노력해 만들었습니다. 정렬에만.

좋은 웹페이지 즐겨찾기