あい
今回は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
バブルソートより