Когда ожидание заменяет сортировку

Такую шутливую идею можно представить как предельно пассивную сортировку: программа проверяет массив и ничего не делает, пока тот не окажется упорядоченным. В отличие от обычной «глупой сортировки» — bogosort, которая перемешивает элементы и проверяет результат снова, — здесь перемешивание якобы должен обеспечить космический луч.

Но проверка сама по себе не меняет порядок. Алгоритму пришлось бы ждать случайного сбоя в памяти компьютера.

Как луч может изменить данные

Космические лучи — частицы высокой энергии из космоса. Столкнувшись с веществом, они иногда порождают каскад других частиц. Если одна из них попадёт в электронную схему, она может изменить сохранённый бит: например, превратить 0 в 1. Такой случайный сбой называют переворотом бита.

Обычно это не аккуратное перемещение одного числа в массиве, а повреждение отдельных данных. Измениться может и само число, и соседняя ячейка памяти, и состояние программы. Чтобы массив случайно стал отсортированным, изменения должны не просто случиться, но и привести к нужному порядку — без побочных ошибок.

Сортировка, у которой нет срока

Для массива из нескольких разных чисел подходящий порядок всего один среди множества возможных перестановок. Случайное воздействие может приблизить данные к нему, но ничто не заставляет следующий сбой сделать их правильными. А если программа заметит, что данные изменились, это ещё не означает, что она сможет продолжить работу корректно.

Поэтому космический луч здесь — не практический метод сортировки, а комическое воплощение надежды на чрезвычайно удачную случайность. Алгоритм может бесконечно ждать результата, который не умеет приближать сам.