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()