Python バブルソート

投稿者: | 2017年1月24日

Pythonでバブルソートを使ってみる。

 

# !/user/bin/env python


def main():

    list = [1, 3, 4, 9, 6, 2, -1]

    # ソート前の配列
    print('ソート前 : {}'.format(list))

    # 調べる範囲の開始する位置を一つずつ後ろへ移動していく繰り返し
    for i in range(len(list) - 1):
        # 後ろから前へ小さい値を移動させていく
        for j in range(len(list)-1, i, -1):

            if list[j] < list[j-1]:
                tmp = list[j]
                list[j] = list[j-1]
                list[j-1] = tmp

    print('ソート後 : {}'.format(list))


if __name__ == '__main__':
    main()

ソート前 :  [1, 3, 4, 9, 6, 2, -1]
ソート後 :  [-1, 1, 2, 3, 4, 6, 9]

 

 

1,3,4,9,6,2,’-1’ → 1,3,4,9,6,’-1′,2 → 1,3,4,9,’-1’,6,2  → 1,3,4,’-1’,9,6,2

→ 1,3,’-1′,4,9,6,2 → 1,’-1′,3,4,9,6,2 → ’-1′,1,3,4,9,6,2

これで、’-1’が移動完了。

 

-1,1,3,4,9,6,’2’ → -1,1,3,4,9,’2′,6 → -1,1,3,4,’2′,9,6 → -1,1,3,’2′,4,9,6

→ -1,1,’2′,3,4,9,6

2は、1を比べて大きいので、移動完了。

 

-1,1,2,3,4,9,’6’ → -1,1,2,3,4,’6′,9

6は、4と比べて大きいので、移動完了。

 

-1,1,2,3,4,6,’9′

9は、6と比べて大きいので、移動完了。

 

 

これでならべ替えをすることができます。

直感的に理解できるが、並べ替えの方法としては非常に遅い。

そのため他のソートアルゴリズムが考案された。

Pocket

コメントを残す

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

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