Python

Pythonで学ぶアルゴリズム ソート バブルソート

バブルソートを実装してみます。

概要

バブルソート (bubble sort) は、ソートアルゴリズムの一つ。隣り合う要素の大小を比較しながら整列させること。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、また並列処理との親和性が高いことから、しばしば用いられる。安定な内部ソート。基本交換法隣接交換法ともいう[ 1 ] 。(単に交換法と言う場合もある)

バブルソート – Wikipedia

サンプルコード

import random


data_len = 10
data = random.sample(range(1, 42), data_len)
print(data)


def bubble_sort(collection):
    length = len(collection)
    for i in range(length - 1):
        swapped = False
        for j in range(length - 1 - i):
            if collection[j] > collection[j + 1]:
                swapped = True
                collection[j], collection[j +
                                          1] = collection[j + 1], collection[j]
        if not swapped:
            break
        print(collection)
    return collection


bubble_sort(data)

実行結果(例)

[27, 4, 36, 14, 17, 5, 11, 9, 10, 22]
[4, 27, 14, 17, 5, 11, 9, 10, 22, 36]
[4, 14, 17, 5, 11, 9, 10, 22, 27, 36]
[4, 14, 5, 11, 9, 10, 17, 22, 27, 36]
[4, 5, 11, 9, 10, 14, 17, 22, 27, 36]
[4, 5, 9, 10, 11, 14, 17, 22, 27, 36]