いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【やってみた】交換法でソートをやってみた(Python)

基本的な整列アルゴリズムである交換法をPythonで実装してみました。

交換法とは

交換法とは * 隣り合う数字を順番に比較する

  • 左が大きい場合は交換する

を繰り返して並び替える方法です。

例えば(3,1,2)の場合

  1. 3と1を比較する→左側の3のほうが大きい→3と1を入れ替える→(1,3,2)

2.3と2を比較する→左側の3のほうが大きい→3と2を入れ替える→(1,2,3)

今回は結果的に並び変わりましたが、この方法では端から端まで入れ替えると一番右側に 一番大きな数字が来ます。そこで次は一番右側の数字を除いて実施します。これを繰り返すと並び変えができるという寸法です。

Pythonで実装

#並び替える数字
a = [1,9,4,6,3,7,5,8,2]

i = len(a)
listR = list(reversed(range(i)))

for p in listR:
    print(p)
    for n in range(p):
        b = [0]*2
        print(n)
        if a[n] > a[n+1]:#左右の文字の大きさを比較
            #左側の数字が大きければ入れ替える
            b[0] = a[n+1]
            b[1] = a[n]
        else:
            #右側の数字が大きい場合はそのまま
            b[0] = a[n]
            b[1] = a[n+1]

        a[n] = b[0]
        a[n+1] = b[1]
                
print(a) #ソートの結果
#[1, 2, 3, 4, 5, 6, 7, 8, 9]  

ちょっと雑なコードですね。