> ## Content Index
> Fetch the complete content index at: https://www.geekjp.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 初心者がpython３とpygameでソートアルゴリズムを可視化してみる【シェーカーソート】
- URL: https://www.geekjp.com/2019-10-24-015714/
- Published: 2019-10-23T16:57:14.000Z
- Updated: 2026-08-01T13:20:29.000Z
- Description: バブルソートを左右から往復させるシェーカーソートをPythonで実装。アルゴリズムの考え方と、交換回数を減らす仕組みをPygameのアニメーションで確認します。
- Author: 工学じじい
- Tags: コンピュータサイエンス, プログラミング, ゲームプログラミング, アルゴリズム, 技術, Pygame, Python, #Import 2026-07-19 20:21, #Import 2026-07-19 20:24

# 

![f:id:gomta777:20191025023103j:plain](https://www.geekjp.com/content/files/images/import/hatena/2019/10/20191025023103.jpg "f:id:gomta777:20191025023103j:plain")

- 初心者がpython３とpygameでソートアルゴリズムを可視化してみる【シェーカーソート】
- シェーカーソート
- アルゴリズム
- 所感

### シェーカーソート

シェーカーソートはバブルソートの改良版です。  
バブルソートは、並びが良い場合（交換が少なくて済む場合）はソートが早いという特徴があります。  
ということは、最悪のケースを考えてみたときに、逆側からバブルソートを行うと早くソートが終わるってことになります。  
最悪のケースの逆は最高のケースででしょう、という前提でバブルソートを往復で行うことにより、交換回数を減らそうというものです。  
実際比較はほぼすべてに対して行うので、アニメーションの処理回数的には変わらないですが、交換という部分で見ると処理は早くなっているはずです。

### アルゴリズム

バブルソートを往復で行うだけですので、特に工夫もなく直感的に実装できます。

[Gistのソースコードを直接開く](https://gist.github.com/gomta777/46c3f96452437a32dc63964fe11962fa?ref=geekjp.com)

まんまですね。

### 所感

実装は当然のように簡単なアルゴリズムだけれども、効果はそれなりにあるかなぁと思いました。  
アニメーションではわからないですが、交換回数は減ってるはずです。