[アルゴリズム] バブルソート(Python編)

2016年12月17日

Python テクノロジー プログラミング 特集

バブルソート第3回はほとんどのOSでデフォルトインストールされている「Python」で行います。 PythonはAIで使ったり、Ansibleで使えたり、コマンドラインで便利にツール作れたり、ライブラリが多かったりするので、覚えておいて損は無い言語ですね。 言語習得の為にたくさんコードの行数を書かねば・・・

前回までのおさらい

バブルソートはアルゴリズムの基本中の基本。 http://www.codereading.com/algo_and_ds/algo/bubble_sort.html C言語とPythonのサンプルコードが書かれていました。 でも、今回もこのサイトをコピペした訳ではないのでご安心ください。

ソースコード

#coding: UTF-8 numbers = [10,2,12,7,16,8,13] while 1: flg=0 for i in range(len(numbers)-1): #print numbers[(i+1)] num1 = numbers[i] num2 = numbers[(i + 1)] if num1 > num2: numbers[i] = num2 numbers[(i+1)] = num1 flg = flg + 1 if flg == 0: break print numbers

環境

今回の環境構築は下記の通りです。
1. VurtualBox + Vagrant 2. Ubuntu15 3. Python 2.7.10
Python2系を使っているんですが、やはり今時は3系にしないとまずいですかね???

解説

そもそも、Pythonの配列ソートは以下のような書き方で簡単にできるんですが、この記事の趣旨として、自分でコードを書くというポリシーで上記ソースコードを作った事を理解してください。 numbers = sorted(numbers) 基本構成はJavascriptとPHPと同じにしてます。
1. 配列定義 2. while処理 *1を指定して、無限ループ状態にしておきます。 3. for文でrangeを使ってiに数値を入れ込んでおきます。※この点が他の言語と少し扱いが違うので要注意ポイントです。 4. 数値の大小判定をして、配列値を入れ替えします。 5. flgで入れ替えが行われなくなったらwhile処理をbreakします。 6. 結果表示をして終了

結果

python bubble_sort.py [2, 7, 8, 10, 12, 13, 16] 思いの外サクッとできてしまったので、Pythonでは持っと簡単に書く方法もあるようですが、今回はこれで完了にします。

アルゴリズム過去記事

いろいろなプログラム言語でアルゴリズム学習