Существует разновидность, которая называется богобогосорт. Сначала он проверяет первые 2 элемента и сортирует их. Затем он проверяет первые 3, bogosorts их, и так далее.
Если список в любой момент выходит из строя, он перезапускается путем повторной сортировки первых 2. Обычный богосорт имеет среднюю сложность O(N!)
, этот алгоритм имеет среднюю сложностьO(N!1!2!3!...N!)
Редактировать : чтобы дать вам представление о том, насколько велико это число, для 20
элементов этот алгоритм занимает в среднем 3.930093*10^158
годы , значительно превышая предполагаемую тепловую смерть вселенной (если это произойдет) 10^100
лет ,
тогда как сортировка слиянием занимает около .0000004
секунд , пузырьковая сортировка .0000016
секунд , а bogosort - 308
годы , 139
дни , 19
часы , 35
минуты , 22.306
секунды , при условии, что год равен 365,242 дням, а компьютер выполняет 250 000 000 32-битных целочисленных операций в секунду.
Edit2 : этот алгоритм не такой медленный, как «алгоритм» чудо-сортировки, которая, вероятно, подобно этому виду, засунет компьютер в черную дыру, прежде чем он успешно отсортирует 20 элементов, но если это произойдет, я бы оценил среднюю сложность от 2^(32(the number of bits in a 32 bit integer)*N)(the number of elements)*(a number <=10^40)
лет ,
поскольку гравитация ускоряет движение альфа-фишек, и существует 2 ^ N состояний, что составляет 2^640*10^40
или около 5.783*10^216.762162762
года , хотя, если бы список начинался отсортированным, его сложность была бы только O(N)
быстрее, чем сортировка слиянием, которая составляет только N log N даже в худшем случае.
Edit3 : этот алгоритм на самом деле медленнее, чем чудо-сортировка, так как размер становится очень большим, скажем 1000, так как мой алгоритм будет иметь время выполнения 2.83*10^1175546
лет , а алгоритм чудо-сортировки будет иметь 1.156*10^9657
годы работы .