Python アルゴリズム プログラミング メモ

Pythonで選択ソートの実装 その②

以前、選択ソートの実装を試してみた事がありました。

no image
Pythonで選択ソートの実装

Pythonで選択ソートを実装してみました。 通常の処理であれば、sort or sorted で処理すれば一瞬なのですが、今回はアルゴリズムの学習の為、あえて選択ソートをループで処理してみました。 ...

続きを見る

結果的にソートは上手く機能していたのですが、よく調べてみると私の実装方法は選択ソートではなくバブルソートに近い実装であるという誤りに気がついたからです。

選択ソートの概念を再度、確認

① 配列の最小値を探す
② 最小値を配列の先頭に移動する
③ ①~②の処理で先頭はソート完了と考えて①~②を繰り返す

 

今回、上記の概念を再確認した上で実装しなおしてみました。

l = [6, 5, 4, 3, 1, 2,]
"""
選択ソートの実装
① 配列の最小値を探す
② 最小値を配列の先頭に移動する
③ ①~②の処理で先頭はソート完了と考えて①~②を繰り返す
"""
counts = 0
for i in range(len(l)):
    min_l = l[i]
    for j in range(i, len(l)):
        if min_l > l[j]:
            min_l = l[j]
    for i in range(len(l)):
        if l[i] == min_l:
            l.pop(i)
            l.insert(counts, min_l)
    counts += 1
print(l)

 

まず、最小値を探索していって、「最小値=先頭に位置する」という考え方が前提になっています。

これは昇順の例で降順は、「最大値=先頭に位置する」という事で同じように選択ソートが実装できます。

sort 関数でやれば一瞬で解決する、どーって事ない話なのですが、ソートの概念を1つ1つ探ってみると、とても面白い仕組みになっている事が理解できます。

現時点で私が調べた限りですがソートアルゴリズムだけで少なくとも13パターンある事がわかりました。

ちょっとずつ調べて実装していきたいと思っています。

 

 

-Python, アルゴリズム, プログラミング, メモ

Copyright© donguri.pyのblog , 2024 All Rights Reserved.