2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

『アルゴリズム図鑑』のアルゴリズムをPython3で実装(選択ソート編)

Last updated at Posted at 2020-03-16

#この記事について
この記事では筆者が『アルゴリズム図鑑』を読んで学んだアルゴリズムについて、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はあえて使わずに実装しました。

###コード

selection_sort.py
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]

#終わりに
自分の書いたコードを投稿する練習も兼ねて初投稿してみました。気づいた点などあればご指摘、ご質問いただければと思います。特にコードの書き方の改善点などあれば勉強になるなと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?