#この記事について
この記事では筆者が『アルゴリズム図鑑』を読んで学んだアルゴリズムについて、Python3での実装例を紹介したいと思います。今回のアルゴリズムは選択ソートです。筆者は素人です。色々教えていただけると幸いです。
筆者はPython2のことをよく知りませんが、自分がPython3を使ってるっぽいことだけはわかっています(Python3.6.0かな?)。そのため、記事のタイトルではPython3としました。
#選択ソートについて
問題設定とアプローチについてざっくりとだけ説明します。
###問題
与えられた数の列に対して、小さい数から順に並べ替えた列を返す。
例:
4, 3, 1, 2
→ 1, 2, 3, 4
###アプローチ
先頭から順に値を確定させる。未確定の数から最小値を見つけ、入れ替えによって前(先頭側)に持ってくる。詳細は『アルゴリズム図鑑』を参照。
例:
確定された数を[ ]で囲って表記
4, 3, 1, 2
→ [1], 3, 4, 2
→ [1], [2], 4, 3
→ [1], [2], [3], 4
#実装コードと実行結果
実装したコードを以下に示します。最初に変数dataに代入されているリストが処理対象の数の列です。また、リストのminはあえて使わずに実装しました。
###コード
data = [4, 3, 1, 2]
print("input :" + str(data))
data_len = len(data)
for k in range(0, data_len - 1):
min_index = k
min_data = data[k]
for i in range(k + 1, data_len):
if data[i] < min_data:
min_index = i
min_data = data[i]
else:
pass
data[min_index] = data[k]
data[k] = min_data
print("output :" + str(data))
###実行結果
$ python selection_sort.py
input :[4, 3, 1, 2]
output :[1, 2, 3, 4]
#終わりに
自分の書いたコードを投稿する練習も兼ねて初投稿してみました。気づいた点などあればご指摘、ご質問いただければと思います。特にコードの書き方の改善点などあれば勉強になるなと思います。