简介
BogoSort是一种基于无限猴子定理的高效排序算法。
论证
想要理解BogoSort,需要先理解无限猴子定理。
无限猴子定理
假设你有无限只不死的猴子,他们智商一般,至少看不懂莎士比亚。
现在你把他们关在小黑屋里,一猴一个打字机。
然后你把门锁上,立刻跑到夏威夷去度3000亿年的假(可能要更长)。
等到你回来的时候,其中一定有一只猴子成功地打出了《哈姆雷特》。
由于《哈姆雷特》的长度有限,因此完整打出的概率存在(即使微乎其微) ,那么给了无限只猴子,总是能够打出来的。
(概率大致为1/(3.4^10)^28)
BOGOSORT
让我们回到算法,其实整体的思想十分朴素。
- 检查序列是否已排序,如果已排序,输出。
- 随机打乱,跳回第一步。
这样一个代码在最坏情况下时间复杂度为O(∞),平均复杂度为O(n*n!)。
实现
#include<iostream>
#include<cstdio>
#include<cmath>