バブルソート第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では持っと簡単に書く方法もあるようですが、今回はこれで完了にします。
アルゴリズム過去記事
いろいろなプログラム言語でアルゴリズム学習
0 件のコメント:
コメントを投稿