Bogo Sort

Bogo Sortとは Link to this heading

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

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

アルゴリズム Link to this heading

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

実装例 Link to this heading

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

計算量 Link to this heading

要素数を$n$とする。

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

Pros Link to this heading

  • アルゴリズムが単純

Cons Link to this heading

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

利用場面 Link to this heading

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