
VSCode×Pythonでアルゴリズムを動かそう!バブルソートのアニメーションを作成
本記事では、無料開発環境のVScode とPythonでアルゴリズムを動かすアニメーションを作成する方法を解説します。
探索アルゴリズムと整列アルゴリズムを学んだので、これらのアルゴリズムによる配列データの動きを可視化したい!と考えました。
簡単に実装できますので、本記事を参考にして試してください。
用意する物
標準機能のhp ノートパソコン(10万円未満)
VSCode をインストール
VSCode 内でPythonをインストール
VSCode内でPythonのライブラリ「matplotlib」をインストール
ChatGPT
VSCodeのダウンロードページ
ChatGPTの支援でアルゴリズムのアニメーションを作る方法
ChatGPTに、VSCode、Pythonで〇〇アルゴリズムのアニメーションを作成したい、などと入力してコーディングしてもらう。
作成されたコードをVSCodeの新規ファイルにコピペする。
動作確認して、エラーが出たら、エラーメッセージをChatGPTにコピペして修正コードを出力してもらう。
2と3の繰返しで、必要に応じてライブラリなどをコマンドプロンプト等でインストールする。
交換法(バブルソート)アルゴリズムのアニメーション
.GIF形式で出力・保存機能を追記
data =[8, 20, 10, 2, 4] の配列データを集成すれば、アニメーションの結果も変化します。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
# 初期データ
data = [8, 20, 10, 2, 4]
data_history = [data.copy()]
# バブルソートの過程を記録
def bubble_sort(data):
arr = data.copy()
n = len(arr)
for i in range(n):
swapped = False
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
data_history.append(arr.copy()) # 各ステップを保存
if not swapped:
break
bubble_sort(data)
# アニメーションの設定
fig, ax = plt.subplots()
bar_rects = ax.bar(range(len(data)), data_history[0])
def update(frame):
for rect, value in zip(bar_rects, data_history[frame]):
rect.set_height(value)
return bar_rects
ani = animation.FuncAnimation(fig, update, frames=len(data_history), repeat=False)
# GIFとして保存
ani.save("bubble_sort.gif", writer="pillow", fps=1)
plt.show()

(ChatGPTが作成したコードをコピペ)
バブルソートアルゴリズムのアニメーション動画(.GIF)

動画(.GIF)は、棒グラフが動き、昇順に整列される動きが確認できます。
感想
他のアルゴリズムによる配列データの動きもアニメーションで確認してみたいです。
実際に動きが見れると、アルゴリズムの動きの理解が深まります。また、作成して動きが見れるのは楽しいですよ!
ChatGPTを巧く使えば、プログラミング経験が浅くても、数分で実装できます。質問の仕方のコツを掴めば、簡単です。
基本情報技術者試験科目Bのアルゴリズム問題も、Pythonでアニメーション化したらより理解が深まりそうです。
以上です。