投稿日: 2024年5月1日
最終更新日: 2024年5月3日
概要
- ソート範囲の末尾から順に隣り合う要素の大小を比較する
- 右側の要素が左側の要素よりも小さければ2つの要素を交換する
- ソート範囲の左端に到達するまで1から2を繰り返す
- ソート範囲の左端に到達したら、ソート範囲を左から1つ狭める
- ソート範囲に含まれる要素数が1になるまで1から4を繰り返す
特徴
- in-placeアルゴリズムである
- 計算量はO (n^2) である
実装
import random
def bubble_sort(nums: list[int]) -> list[int]:
for i in range(len(nums) - 1):
for j in range(len(nums) - 1, i, -1):
if nums[j] < nums[j - 1]:
nums[j], nums[j - 1] = nums[j - 1], nums[j]
return nums
nums: list[int] = []
while len(nums) < 10:
num: int = random.randint(1, 100)
if num not in nums:
nums.append(num)
print(f'入力: {nums}')
print(f'出力: {bubble_sort(nums)}')