
あい
今回はpythonで
バブルソートを
実装しアルゴリズム
を理解します
[R]※本サイトにはプロモーションが含まれています

ソートとは
データを一定の規則に従って並び替える処理
データの並び変え処理には主に
昇順, 降順がある
昇順 : 小さな数から大きな数へ
降順 :大きな数から小さな数へ
以下データを

昇順にすると

降順にすると

# 初期データ
data = [8, 6, 5, 3, 6, 10, 4]
# 昇順に並べ替え
ascending_data = sorted(data)
print("昇順:", ascending_data)
# 降順に並べ替え
descending_data = sorted(data, reverse=True)
print("降順:", descending_data)
実行結果

バブルソート処理手順
1.データの右端と隣の左を比較し
左>右なら入れ替える


2.一つ左の位置の左右を調べ
左>右なら入れ替える


二つ左位置の左右を調べetc..
処理を繰り返し
最終的に一番左に最小値が来ます

3.一番左を除いた値で1,2同様の処理を行う

この処理を繰り返してソート完了です

バブルソート実装
昇順に並び替えるバブルソートの
処理を実装します
data = [8,6,5,3,6,10,4]
n = len(data)
print(f"データ数 = {n}")
for i in range(0,n-1):
for j in range(n-1, i, -1):
if data[j-1] >data[j]:
data[j-1], data[j] = data[j], data[j-1]
print(f"ソート後のデータは{data}")
実行結果

アルゴの説明をします
1.ソートするデータと要素数を取得する
data = [8,6,5,3,6,10,4]
n = len(data)

以下手順を実装します




etc…

data = [8,6,5,3,6,10,4]
n = len(data)
print(f"データ数 = {n}")
for j in range(n - 1, 0, -1):
if data[j-1] >data[j]:
data[j-1], data[j] = data[j], data[j-1]
print(data)
実行結果

次に以下手順を加えます
一番左を除いた値で1,2同様の処理を行う

1,2の処理の金型は既に作ってあるので
1,2の処理の外に
forを使って1,2の処理を
シフトさせてあげればよいだけです
data = [8,6,5,3,6,10,4]
n = len(data)
print(f"データ数 = {n}")
for i in range(0,n-1):
for j in range(n-1, i, -1):
if data[j-1] >data[j]:
data[j-1], data[j] = data[j], data[j-1]
print(f"ソート後のデータは{data}")
参考文献


あい
Chapter 5
Lesson 5-2
バブルソートより