Python(バブルソート)

難しいプログラムコードばかりアップしていて自分でも頭がパンクしそうなんで、基礎に戻ってコードを書きました。

def my_sort(xs):
    tmp_list=xs.copy()
    for i in range(len(tmp_list)):
        for j in range(len(tmp_list[1:])):
            tmp = tmp_list[i]
            if tmp < tmp_list[j]:
                tmp_list[i] = tmp_list[j]
                tmp_list[j] = tmp
    return tmp_list

def my_sort2(xs):
    tmp_list=xs.copy()
    for i in range(len(tmp_list)):
        for j in range(len(tmp_list[1:])):
            # タプルを利用して一時変数を置かなくても入れ替え可能
            if tmp_list[i] < tmp_list[j]:
                tmp_list[i],tmp_list[j] = tmp_list[j],tmp_list[i]
    return tmp_list

xs=[1,10,-4,5,2,100]
print("before",xs)
print("after",my_sort2(xs))

最初に書いたmy_sort関数は一時変数を用いてswap(入れ替え)させる典型的な書き方コードですね。
Pythonだとタプルを用いて一時変数を作らなくても
tmp_list[i],tmp_list[j] = tmp_list[j],tmp_list[i]
って感じに入れ替え可能!
型宣言がなかったり、変数と関数オブジェクトも同列扱いだったり、知らないと驚くようなことが沢山ありますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Python

前の記事

Python(シーザー暗号化)
Python

次の記事

Python(ラムダ式)