[アルゴリズム] バブルソート(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では持っと簡単に書く方法もあるようですが、今回はこれで完了にします。

アルゴリズム過去記事

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

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。