サンプルコード:バブルソート

Python でバブルソートを行うサンプルコードです。

リストに対して 2 重ループを回し、隣同士の要素を比較して入れ替えていきます。

import unittest


def bubble_sort(li):
    """バブルソートでソートしたリストを返す"""
    li_sorted = li[:]

    length = len(li_sorted)
    for i in range(0, length):
        for j in range(1, length - i):
            if li_sorted[j - 1] > li_sorted[j]:
                swap(li_sorted, j)

    return li_sorted


def swap(li, index):
    """リストの隣り合った要素 index -1 & index の値を入れ替える"""
    li[index], li[index - 1] = li[index - 1], li[index]


if __name__ == "__main__":
    class TestBubbleSort(unittest.TestCase):
        """`bubble_sort()` のテスト"""
        def test_empty(self):
            self.assertEqual(bubble_sort([]), [])

        def test_single_element(self):
            self.assertEqual(bubble_sort([10]), [10])

        def test_four_elements(self):
            self.assertEqual(bubble_sort([8, 5, 2, 1]), [1, 2, 5, 8])

        def test_three_elements(self):
            self.assertEqual(bubble_sort([1, 5, 3]), [1, 3, 5])


    unittest.main()

参考