Випадкове сортування

Матеріал з testwiki
Версія від 22:28, 12 жовтня 2023, створена imported>TohaomgBot (Перекладено дати в примітках з англійської на українську)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Випадкове сортування (Шаблон:Lang-en)[1][2] — неефективний на практиці гумористичний алгоритм сортування. Наочно використовується для впорядкування колоди карт таким чином: колода підкидається у повітря, карти збираються у довільному порядку і перевіряється, чи є колода впорядкованою. Якщо колода невпорядкована, то операцію повторюють.

Алгоритм має й інші назви: сортування бозо (Шаблон:Lang-en), дурне сортування (Шаблон:Lang-en), мавпяче сортування (Шаблон:Lang-en), випадкове сортування (Шаблон:Lang-en), сортування п'яниці (Шаблон:Lang-en).

Випадкове сортування не є стабільним.

Псевдокод

BogoSort(A)
1 while not is_sorted(A)
2       do ARandom_Permutation(A)

Функція is_sorted(A) повертає значення істина, якщо масив A впорядкований, а функція Random_Permutation(A) повертає випадкову перестановку елементів масиву.

Час роботи

Одна ітерація алгоритму потребує часу O(n) — найкращий можливий час роботи. В середньому алгоритм буде працювати: ni=1in!(11n!)i1=O(nn!) (в припущенні, що всі елементи масиву різні). Також час роботи алгоритму залежить від того скільки різних елементів присутні в масиві, і як часто кожен з них зустрічається. За лемою Бореля — Кантеллі, алгоритм завжди знайде правильне впорядкування (можливо за дуже велику кількість кроків).

Проте, слід зауважити, що в комп'ютерах використовуються не справжні випадкові числа а їх аналоги (псевдовипадкові числа). Тому комп'ютерна реалізація випадкового сортування може ніколи не завершити роботу.

Примітки

Шаблон:Примітки

Посилання

Шаблон:Comp-stub Шаблон:Humor-stub Шаблон:Без джерел Шаблон:Алгоритми сортування