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と比べて大きいので、移動完了。
これでならべ替えをすることができます。
直感的に理解できるが、並べ替えの方法としては非常に遅い。
そのため他のソートアルゴリズムが考案された。