【アルゴリズム】Pythonでバブルソートを実装しアルゴリズムを理解する

アルゴリズム
あい
あい

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

タイトルとURLをコピーしました