Bogo Sort

Bogo Sort(ボゴソート)とは、非効率で非実用的なソートアルゴリズムのひとつ。非安定なソートの一種。

ソートとしてこれを指すことはほぼない。教育目的やアルゴリズムの理解を深めるために用いられることがある。

  1. 適当に並び替える
  2. ソートが完了しているか確認する
    • 完了していなければ1に戻る

import random


def is_sorted(numbers: list[int]) -> bool:
    return all(numbers[i] <= numbers[i + 1] for i in range(len(numbers) - 1))


def bogo_sort(numbers: list[int]) -> list[int]:
    sorted_list = numbers.copy()
    while not is_sorted(sorted_list):
        random.shuffle(sorted_list)
    return sorted_list

要素数を$n$とする。

計算量
Average$\mathrm{O}((n+1)!)$
Best$\mathrm{O}(n)$
WorstUnbounded

  • アルゴリズムが単純

  • 極端に非効率。実用的なソートアルゴリズムとしてはまったく適さない。
  • 実行時間が不定。理論上、ソートが完了するまでに無限の時間がかかりうる。
  • 計算リソースを無駄に消費する
  • 非安定なソート

  • 教育目的 : 効率的なソートアルゴリズムと比較することで、アルゴリズムの理解を深められる
Licensed under CC BY-NC-SA 4.0
最終更新 Dec 24, 2023
Built with Hugo
テーマ StackJimmy によって設計されています。