初心者がpython3とpygameでソートアルゴリズムを可視化してみる【バブルソート】【インサーションソート】

Pythonでバブルソートと挿入ソートを実装し、Pygameで並べ替えの過程を可視化。隣接交換を繰り返す方法と、適切な位置へ要素を挿入する方法の違いを比較します。

Share
初心者がpython3とpygameでソートアルゴリズムを可視化してみる【バブルソート】【インサーションソート】

バブルソート

前回に引き続いて調子に乗って別のソートアルゴリズムも試してみました。
まぁありがちですが。。。

Gistのソースコードを直接開く

バブルソートは隣り合う要素の値を比較して条件に応じた交換をしてゆき。
最大値(または最小値)を逐次右端(または左端)に寄せていくことによりソートを実現します。
大きい順(または小さい順に)順次値が泡のように浮いていくのでバブルソートと呼ばれます。
詳しいことは、ググるとたくさん載ってるのでこの辺でw

効率については、悪いほうのアルゴリズムです。

とりあえず、pythonだと実装めっちゃ簡単でびっくりしました。
(まぁ、速度はC/C++の方が早いんだろうけど)
何がって、値の交換が

a, b = b, a

で書けるってのがでかいですね。
バブルソートやインサーションソートのようにインデックスベースで入れ替えが起こる処理では、楽できるね。

結果

前回同様、入れ替えの操作をリストに記録して、後で再生してます。

インサーションソート

注目要素の値を、順次適切な位置に挿入することによって、整列を行うアルゴリズムです。
処理が簡単なので、バブルソートのように隣接する要素と比べて値を交換していきますが、適切な挿入位置に値が収まると次のループに移行します。

Gistのソースコードを直接開く

結果

動画を見ると、バブルソートとインサーションソートの違いが判ると思います。

所感

交換していく系のソート2つを実装してみました。
リストの操作や、繰り返しでミスったりいろいろありましたが、pythonの練習にはちょうど良かったかな?
そして、pygameが使いづらい。。。
enchant.jsで遊んでた時はとても楽だったのに笑
くじけずもうちょい遊んでみようかなって思います。

へだば、また!

Read more

どうしてWindowsはCドライブから始まるの? AとBはどこへ行った?

どうしてWindowsはCドライブから始まるの? AとBはどこへ行った?

どうしてWindowsはCドライブから始まるの? AとBはどこへ行った? Windowsを使っていると、システムが入っているドライブってだいたい C: ですよね。 でも、よく考えると変じゃないですか? アルファベットなら普通はAから始まりそうなのに、なんでいきなりCなの? じゃあ、 A: B: はどこに行ったんだよ、って話です。 これ、別にCに何か特別な意味があるわけじゃありません。 昔、AとBを先に使っちゃったから、その次がCになった。 だいたいそれだけの話です。 そもそも「Cドライブ」ってWindows系の文化 まず、C: とか D: とかいう呼び方は、今だとWindowsでおなじみのものです。 LinuxやmacOSでは、基本的にこんな呼び方はしません。 Linuxなんかだと、 / ├─ home ├─ usr ├─ var └─ ... みたいに / を一番上にして、ディスクもそのディレクトリ構造の中にくっつけて使います。 じゃあWindowsの C: D: E: はどこから来たのか。 Windowsより前の MS-DOS です。 ……

DirectXTK講座 第2回:Direct3D 11のテンプレート導入からウィンドウを表示まで

DirectXTK講座 第2回:Direct3D 11のテンプレート導入からウィンドウを表示まで

DirectXTK講座 第2回:Direct3D 11のテンプレートを導入してウィンドウを表示しよう 今回は、DirectXTKを使ったプログラムを作る土台として、Direct3D 11のプロジェクトテンプレートをVisual Studioに導入し、実際にウィンドウが表示されるところまで確認してみよう! 使用するのは、Chuck Walbourn氏が公開している directx-vs-templates を使います。個人のリポジトリですが、MS公式からもリンクされており、ほぼ公式です。テンプレートを使うことで、あらかじめWindow1枚ぐらいペロッと出すところまでを作ってくれます。 そのために、テンプレートを自分の開発環境にインストールする必要があります。VS(VisualStudio)までは前回まででインストールできていると思うので、それにテンプレートを追加するって感じ。 1.Direct3D用テンプレートを入手する まず、ブラウザ(なんでもいいよ)で次のGitHubリポジトリを開きます。 directx-vs-templates - GitHub リポジトリを開いたら