概要
バブルソートは、非常にシンプルで基本的なソートアルゴリズムの1つです。隣接する要素を比較して入れ替える操作を繰り返し、データをソートします。
計算量が O(n^2) と非効率なため、大規模なデータセットには適していませんが、アルゴリズムの学習や小規模データのソートには適しています。
この記事では、Pythonでのバブルソート実装方法について説明します。
コード
以下がPythonでのバブルソートの実装例です。
def bubble_sort(arr):
n = len(arr)
# ここでソートが行われる
for i in range(n):
# すでにソートされた部分は確認しないようにする
for j in range(0, n - i - 1):
# 隣接する要素を比較して入れ替える
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
# サンプルの使用例
if __name__ == "__main__":
sample_data = [64, 34, 25, 12, 22, 11, 90]
print("ソート前:", sample_data)
sorted_data = bubble_sort(sample_data)
print("ソート後:", sorted_data)
実行結果
ソート前: [64, 34, 25, 12, 22, 11, 90]
ソート後: [11, 12, 22, 25, 34, 64, 90]
詳細
bubble_sort関数は、リストarrを入力として受け取り、ソートされたリストを返します。
外側のforループは、配列の長さ分ソートの処理を繰り返します。
内側のforループでは、隣接する要素を比較し、順序が逆であればそれらを入れ替えます。これにより、最大の値が徐々にリストの最後に移動します。
各反復のたびに最後にソートされた部分は無視されます(n - i - 1 の部分)。
参考